2016-07-13 8 views
0

更新データを残し:オープンソースExcelDataReader(https://www.nuget.org/packages/ExcelDataReader/)を使用してOleDbDataAdapterおよは、Excelのセルから

は、問題を解決しました。


私はこの

DataSet ds = new DataSet(); 
OleDbConnection cn = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties= Excel 12.0;"); 

cn.Open(); 

OleDbDataAdapter da = new OleDbDataAdapter("SELECT * FROM ["Sheet1$"]", cn); 
da.Fill(ds, "Sheet1$"); 

cn.Close(); 

のようなの.xlsxファイルからデータを読み込んだとすべてが正常に動作するようだが、2つの特定の行にアダプタがただ一つのセルの最後の行をカット(両方の影響を受けた行は、その特定のセルで同じ内容を持ちます)。

すなわち:

"1 : 0x01 : Text_Example1(sometext) 
2 : 0x02 : Text_Example2(sometext) 
3 : 0x04 : TexT_Example3(sometext)" 

becomes 

"1 : 0x01 : Text_Example1(sometext) 
2 : 0x02 : Text_Example2(sometext) 
3 :" 

何の問題がここにあると私はそれをどのように修正することができますか? 私にとっては、この問題は発生しないため、他のすべての行では完全にランダムなようです。

編集: 私は既に拡張プロパティHDR = NO/YESとIMEX = 0/1を使って試してみましたが、関連する多くの質問に示唆されていますが、それでもやりませんでした。

+0

Excelシートのスクリーンショットを表示できますか? – Sachu

+0

セルフォーマットが異なる場合、その確信データ – CptnBeefheart

+1

が通常この問題が発生するため、私はできません。 – Sachu

答えて

0

私は別のアプローチを提案するかもしれませんが、.xlsxファイルはOpenXMLファイルです。これはXMLと他のメタデータを含むZIPファイルです。

Microsoftには、このようなファイルを操作できるOpenXML APIがあります。これがデータにアクセスする "ネイティブ"な方法であり、正しく動作するはずです。

ClosedXMLと呼ばれるオープンソースプロジェクトは、OpenXML APIをより開発者にやさしくすることを目的としています。私は自分で使ったことはありませんが、既存のコードでうまく使用されていることがわかりました。

+0

私はClosedXMLを使用していませんでしたが、Excel Data Reader(オープンソースも)を使用しています。 しかし、とにかくおかげさまで申し訳ありません – CptnBeefheart

関連する問題