1

我非常关注此 MSDN 页面上的示例:

http://code.msdn.microsoft.com/Imoprt-Data-from-Excel-to-705ecfcd

有 1 个例外。而不是像这样的简单查询

"Select * FROM [Sheet1$]"

我想做一些更复杂的事情,比如:

"Select *, SUBSTRING(COLUMN_A, 1, 5) as STRIPPED_COL_A FROM [Sheet1$]"

但我收到一条无用的异常消息“IErrorInfo.GetDescription failed with E_FAIL(0x80004005)。”

如果我不得不猜测,问题是由于在 Excel 或 OleDB 中使用了不受支持的 SUBSTRING 函数。那么如何解决这个问题。

4

1 回答 1

7

在他们的示例中,您使用 Microsoft.ACE.OLEDB 驱动程序来加载 excel 表,Provider=Microsoft.ACE.OLEDB.12.0因此Provider=Microsoft.Jet.OLEDB.4.0您将不得不使用 MS Access 中可用的查询格式和功能。

Select *, MID(Column_A, <<start>>, <<length>>) as STRIPPED_COL_A from [Sheet1$]

请记住其他特性,例如<<start>>不是零索引,而是以 1 作为字符串中的第一个字符开始。

于 2012-05-02T04:38:42.717 回答