繁体   English   中英

使用OLEDB读取excel文件时数据丢失

[英]Data is missing while reading excel file using OLEDB

我正在使用OLEDB将excel文件读入datatable。 但问题是,缺少一些值(空)。 在我的Excel工作表中,一列数据类型是常规,它具有混合值,如字符串和整数。 大多数单元格值都是整数。 为什么OLEDB正在跳过字符串值。

OleDbConnection connection = new OleDbConnection();

connection.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + filePath + "; Extended Properties=\"Excel 12.0;IMEX=1\";";
OleDbCommand myAccessCommand = new OleDbCommand();

myAccessCommand.CommandText = "Select * from [" + sheetName + "]";

OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand);

myDataAdapter.Fill(myDataSet);

检查以下链接并查看“解决方案”下的点: http//support.microsoft.com/kb/194124

请参阅第2点注意。

设置IMEX = 1完全取决于您的注册表设置。 默认情况下,将检查前8行以确定数据类型。 IMEX = 1可以提供不可预测的行为,例如跳过字符串值。 此问题还有一个小的解决方法。 只需在excel中的每个单元格值之前添加单引号(')。 每个单元格都将被视为字符串。

将IMEX = 1添加到连接字符串,如下所示:

string con = string.Format(@"Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};" + @"Extended Properties='Excel 8.0;HDR=Yes;IMEX=1'", fileName);

暂无
暂无

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

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