0

我正在尝试将 excel 文件读入 DataTable,但 IMEX 驱动程序不会读取列中的所有数据。这有什么问题?

OleDbConnection dCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + fileName + ";Extended Properties=HDR=YES;Excel 12.0;IMEX=1");

这是代码。

OleDbConnection dCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
            fileName + ";Extended Properties=HDR=YES;Excel 12.0;IMEX=1");

OleDbDataAdapter dAdp = new OleDbDataAdapter("SELECT * FROM [Sheet1$]", dCon);
dAdp.TableMappings.Add("tbl", "Table");
dAdp.Fill(dSet);
DataTable dT = dSet.Tables[0];

for (int i = 0; i < dT.Rows.Count; i++)
{
     //code for getting the values.
}
4

2 回答 2

1

问题是这样做有 255 个字符的限制。

您可能需要考虑使用该Microsoft.Office.Interop.Excel程序集以获得更好的解决方案。

http://www.dotnetperls.com/excel

于 2012-11-13T10:00:43.063 回答
0

我意识到这对于 OP 来说有点晚了,但是因为我遇到了它,所以我想补充一点,我认为扩展属性部分在此示例中格式不正确。扩展属性需要单独括在自己的引号中,以便进行适当处理。

OPs 示例使用了这个

OleDbConnection dCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
        fileName + ";Extended Properties=HDR=YES;Excel 12.0;IMEX=1");

我相信这应该是

OleDbConnection dCon = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" +
        fileName + ";Extended Properties=\"HDR=YES;Excel 12.0;IMEX=1\"");

使用这种格式错误的连接,可能无法识别 IMEX 属性。

有关可能的连接字符串语法选项(包括扩展属性的选项)的信息,请参阅此 MS 文章。

于 2013-10-30T17:55:03.893 回答