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

本文关键字:文件 OLEDB excel 读取 数据 | 更新日期: 2023-09-27 17:51:14

我使用OLEDB读取excel文件到数据表。但问题是,一些值缺失(空)。在我的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);

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

查看以下链接,查看"RESOLUTION"下的要点: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);