【问题标题】:C# code to read Excel (html import)C#代码读取Excel(html导入)
【发布时间】:2011-10-09 14:03:37
【问题描述】:

我试图用 C# 代码读取 HTML 类型的 Excel 文件。 我收到“未指定的错误”。

这是我的连接字符串:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties='HTML Import;  // c:\1.xls

这是我的代码:

private string GetTableName(OleDbConnection conn)
{
   string tableName = null;
    try
    {
       conn.Open();

       var dt = conn.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
       if (dt == null)
       {
          log.Error("Table schema is not available.");
          return tableName;
       }

       tableName = dt.Rows[0]["TABLE_NAME"].ToString();
    }
    catch (Exception e)
    {
       log.Warn(e);
       return null;
    }
    finally
    {
       conn.Close();
    }
    return tableName;
}

我查遍了互联网和谷歌,没有人遇到完全相同的问题。

我想了解我的代码有什么问题或“未指定错误”是什么意思?!

谢谢!!!

【问题讨论】:

  • 如果我没记错的话,其中一个 windows xp 服务包更改了 jet 驱动程序周围的安全设置并读取 html 表格,但我在我正在考虑的 msdn 上找不到该文档。它基本上限制了读取 html 表格的能力。如果我找到它,我会回来并发布链接。祝你好运
  • 查看support.microsoft.com/kb/240770 有一个部分讨论“DisabledExtensions”

标签: c# excel connection-string


【解决方案1】:

尝试使用

 Provider=Microsoft.ACE.OLEDB.12.0;

编辑:

使用这个连接字符串

"Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES;IMEX=1\";"

HDR=Yes 表示标题被视为数据行而不是列名(根据您的需要更改)

IMEX=1 指定表包含混合数据

【讨论】:

    【解决方案2】:

    对于 Excel 2007,将连接字符串更改为

    Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0 Xml;HDR=YES';
    

    ACE OLEDB 12.0 随 Office 2007 一起发布。也可以使用 Microsoft.ACE.OLEDB.12.0 连接到旧版 .xls (Excel 97-2003) 工作簿。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-01
    • 2015-07-18
    • 1970-01-01
    • 2010-11-17
    • 2010-12-16
    • 1970-01-01
    • 2012-08-07
    相关资源
    最近更新 更多