我正在使用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);
答案 0 :(得分:4)
检查以下链接并查看“RESOLUTION”下的要点: http://support.microsoft.com/kb/194124
请参阅第2点注意。
设置 IMEX = 1 完全取决于您的注册表设置。默认情况下,将检查前8行以确定数据类型。 IMEX = 1 会产生不可预测的行为,例如跳过字符串值。此问题还有一个小的解决方法。只需在excel中的每个单元格值之前添加单引号(')。每个单元格都将被视为字符串。
答案 1 :(得分:-1)
将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);