2009-05-21 8 views
0

xmlスプレッドシート(​​ .xls)を生成する第三者ツールがあります。私は、このSpreasheetを読み込んで処理する別のプログラムを持っています。生成されたxmlスプレッドシートの内容は5列の表で、私のプログラムはそれらに対してselectクエリを実行します。生成されたスプレッドシートへの接続を開いているときに問題に直面しています。 "{"外部テーブルは期待されたフォーマットではありません。 "}" My Connectinの文字列は「Provider = Microsoft.Jet.OLEDB.4.0;データソース= "+ excelFileName +";拡張プロパティ= \ "Excel 8.0; HDR = YES; \" ";この文字列に何か変更する必要がありますか? データセットを使用してdataSet.ReadXml(excelFileName)を呼び出してみました。しかし、データセットには私のテーブルが含まれていません。 XMLスプレッドシートの読み方に関する入力はありますか?あなたの接続文字列は、古いバイナリ形式のExcelファイルに設定されているようなあなたの時間をxmlスプレッドシートの読み方

おかげで、 CS

+1

xlsはExcelのスプレッドシート(​​?) – Shoban

+0

です。スプレッドシートをxml spreasheet 2003(タイプオプションメニューとして保存)として保存することができます。ファイル拡張子は* .xls – Cshah

+0

"xml spreadsheet(* .xls)"です。これは間違いなく面白いです。 http://en.wikipedia.org/wiki/Microsoft_Excel_file_format#File_formatsとhttp://en.wikipedia.org/wiki/Office_Open_XMLをお読みください –

答えて

1

が見えます。 XMLには別の接続文字列が必要です。新しいExcel 2007のXMLファイルについて話している場合は、このconnection stringを必要とする:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES"; 

あなたはExcel 2003で来た古いXML形式の話をしている場合は、私がそこにあるかわかりません接続文字列。その場合は、Excelで開いてからxlsファイルとして保存し、最初に使用していた接続文字列を使用するのが最善の方法です。

ちなみに、ConnectionStrings.comは、さまざまな種類のすべてのデータにアクセスする必要がある古い接続文字列を見つけるのに最適な場所です。

xmlファイルの場合は、xlsファイル拡張子を使用しないでください。xmlファイルまたは.xlsxファイルである必要があります。

0
   Excel.Workbook wb1; 

      Excel.Application wb2 = new Excel.Application(); 

      wb2.DisplayAlerts = false; 
          wb1 = (Excel.Workbook)wb2.Workbooks._Open(filename); 

      if (wb1.FileFormat == Excel.XlFileFormat.xlXMLSpreadsheet) 
      { 
            wb1.SaveAs(filename, Excel.XlFileFormat.xlExcel12, Type.Missing, Type.Missing, 
         false, false, Excel.XlSaveAsAccessMode.xlNoChange, 
         Excel.XlSaveConflictResolution.xlOtherSessionChanges, false); 
      } 
      else 
      { 
       wb2.Workbooks.Close(); 

      } 

Excel SpreadSheetを2007形式に変換し、LinQを使用して任意のオープンソースプロバイダまたはOleDBを使用してシートにクエリを実行できます。

関連する問題