IErrorInfo.GetDescription 在 asp.net c# 中因 E_FAIL(0x80004005) 而失败?

Posted

技术标签:

【中文标题】IErrorInfo.GetDescription 在 asp.net c# 中因 E_FAIL(0x80004005) 而失败?【英文标题】:IErrorInfo.GetDescription failed with E_FAIL(0x80004005) in asp.net c#? 【发布时间】:2017-02-27 15:31:26 【问题描述】:

我正在尝试读取 excel 文件并将文件的内容转换为数据表,但我不断收到此异常 IErrorInfo.GetDescription failed with E_FAIL(0x80004005) 指向特定行POCCommand.Fill(dt);这是我尝试过的远的。我可能做错了什么?

string POCpath = @"p.xlsx";
 string POCConnection = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + POCpath + ";Extended Properties=\"Excel 12.0;HDR=Yes;IMEX=1\";";

    OleDbConnection POCcon = new OleDbConnection(POCConnection);
    OleDbCommand POCcommand = new OleDbCommand();
    DataTable dt = new DataTable();
    OleDbDataAdapter POCCommand = new OleDbDataAdapter("select * from [Sheet1$] ", POCcon);
    POCCommand.Fill(dt);
    Console.WriteLine(dt.Rows.Count);

【问题讨论】:

Best /Fastest way to read an Excel Sheet into a DataTable?的可能重复 【参考方案1】:

首先,由于您使用的是 .NET,因此您需要将从 IDisposable 继承或实现的任何内容包装到 using 语句中。

如:

using (OleDbConnection connection = new OleDbConnection("connectionstring"))
    //Do stuff here

第二: 请在此SO Answer 上参考MethodMan 的出色答案。 它拥有您需要知道的一切。他同时进行 OleDb 连接和 TextFieldParser,这将更快且更便宜。

【讨论】:

以上是关于IErrorInfo.GetDescription 在 asp.net c# 中因 E_FAIL(0x80004005) 而失败?的主要内容,如果未能解决你的问题,请参考以下文章

查询“select * from open”时获取“IErrorInfo.GetDescription failed with E_FAIL(0x80004005)”

vfpoledb.1 在第二次打开时给出 IErrorInfo.GetDescription failed with E_FAIL(0x80004005)