OleDbConnection中的IMEX

时间:2012-11-13 08:27:39

标签: c# excel connection-string oledb

我正在尝试将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.
}

2 个答案:

答案 0 :(得分:1)

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

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

http://www.dotnetperls.com/excel

答案 1 :(得分: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属性。

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