繁体   English   中英

OleDbDataAdapter保留了Excel单元格中的数据

[英]OleDbDataAdapter leaves out Data from Excel Cells

更新:

使用开源的ExcelDataReader( https://www.nuget.org/packages/ExcelDataReader/ )解决了该问题。


我正在从像这样的.xlsx文件读取数据

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();

而且一切似乎都正常,但适配器仅在两个特定行中切断了一个单元格的最后一行(受影响的两行在该特定单元格中具有相同的内容)。

即:

"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来进行尝试,就像许多相关问题上所建议的那样,但这也没有解决问题。

如果我建议使用其他方法,则.xlsx文件是OpenXML文件-包含XML和其他元数据的ZIP文件。

Microsoft有一个OpenXML API,该API可让您处理此类文件。 那是访问数据的“本机”方式,应该表现正确。

有一个名为ClosedXML的开源项目,旨在使OpenXML API对开发人员更加友好。 我自己还没有使用过它,但是看到它已在现有代码中成功使用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM