1

XLS スプレッドシートをダウンロードし、それを .net dataTable にインポートしようとしています。シートの構造は次のとおりです。

(名称のない日付欄)、流入(kWh)、流出(kWh)、ストック(kWh)

接続文字列は次のとおりです。

" Provider=Microsoft.Jet.OleDb.4.0;Data Source=sheet.xls;Extended Properties="Excel 8.0;IMEX = 1"

動作しないもの:

- "SELECT * FROM [Sheet1$]" selects: NoName, Inflow_(kWh), Outflow_(kWh) and the last column is missing

- "SELECT [Stock (kWh)] FROM [Sheet1$]" returns: "No value given for one or more required parameters."

- "SELECT [Stock_(kWh)] FROM [Sheet1$]" returns: "No value given for one or more required parameters."

- "SELECT * FROM [Sheet1$A:D]" Selects: NoName, Inflow_(kWh), Outflow_(kWh) and the last column is missing

機能するが解決策ではないもの:

- "SELECT * FROM [Sheet1$D:D]" Selects: Stock_(kWh) but all other columns are missing
  • ファイルをダウンロードした後に Excel で (保存せずに) ファイルを開き、インポートしようとすると、機能します。

  • Excel 相互運用機能

何か案は?誰?

4

1 に答える 1

0

これは、アプリケーションの1つで使用する接続文字列であり、SELECT * FROM[worksheetName$]を使用するとすべてが正常に機能します。

string connString = "provider=Microsoft.Jet.OLEDB.4.0;Data Source='{0}';Extended Properties=\"Excel 8.0;IMEX=1\""  

データソースを一重引用符で囲み、二重引用符をエスケープしていることを除けば、非常によく似ています(これも適切に実行しているが、表示されなかったと仮定します)。したがって、接続文字列はあなたの問題ではないと思います。

欠落しているStock列だけを取得するためにD:Dを選択した場合、それはどのデータ型ですか?GetOleDbSchemaTableを使用してメタデータを見ると、そのテーブルの列と、欠落している列のデータ型について何が表示されますか?

スプレッドシートの行の例をいくつか挙げて、データがどのようになるかを確認し、試してみてください。また、XLSXではなくXLSですよね?

于 2013-02-06T17:53:45.193 に答える