【问题标题】:Problems reading in an Excel file in C#在 C# 中读取 Excel 文件时出现问题
【发布时间】:2009-12-21 16:25:23
【问题描述】:

我正在使用此代码通过 OLDB Connection 读取 Excel 文件

        var connectionString = string.Format("Provider=Microsoft.Jet.OLEDB.4.0; data source={0}; Extended Properties=Excel 8.0;", fileName);

        var fileName = string.Format("{0}\\s23.xls", Directory.GetCurrentDirectory());
        var adapter = new OleDbDataAdapter("SELECT * FROM [TEJ3$]  ", connectionString);
        DataTable dt=new DataTable();
        adapter.Fill(dt, "Table1");

运行此代码后,我的数据表已填满。但是我有一列有很多字符串单元格和几个空单元格;在 excel 文件中,此单元格具有数值。

有人有想法吗?

【问题讨论】:

  • 你能发布一些示例数据吗? OleDb 提供程序基于前 20 条记录的数据类型。
  • @Mitchel :我们可以将这 20 条记录配置为其他值,例如 50 条记录。我的问题是可配置的。我在参考stackoverflow.com/questions/6913497/…

标签: c# excel oledb


【解决方案1】:

在此处查看第一个示例:http://www.connectionstrings.com/excel

经常出错的是 Excel 会根据前 X 行来估计列的类型。当之后值不匹配时,这些行将获得空值。恐怕进入注册表有时是让 Excel 驱动程序首先扫描所有行的唯一方法(如 connectionstrings.com 文章中所述)。

在您的环境中使用 HDR 和 IMEX 设置。在某些情况下,这也会有所帮助。

【讨论】:

    【解决方案2】:

    我遇到了这个确切的问题,并使用 IMEX 设置解决了这个问题。如果其他人想知道如何包含 IMEX,这是我的连接字符串中的内容

    string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Extended Properties='Excel 8.0;IMEX=1';Data Source={0};";
    connectionString = string.Format(connectionString, excelWorkbookPath);
    

    【讨论】:

    • ;IMEX=1'; =>> 它给出错误: System.Data.OleDb.OleDbException 未被用户代码处理 Message="Could not find installable ISAM." Source="Microsoft JET 数据库引擎" ErrorCode=-2147467259
    • 您没有安装正确的驱动程序。按照 Teun 答案中的链接并尝试使用 HDR 设置的连接字符串
    • 是否需要重新安装。如果是这样,那么您能否提供适当的链接。
    • IMEX 设置也对 ASP.NET 有效,因为我认为它不是这样的:stackoverflow.com/questions/3232281/…
    • 它曾经安装在旧版本的Office中。你需要自己用谷歌搜索。你为什么不尝试我上面的建议来关注 Teun 链接?有使用不同的连接字符串和提供者来做你需要做的事情的例子。
    【解决方案3】:

    SpreadsheetGear for .NET 将让您从 C# 加载 Excel 工作簿并以任何顺序访问基础单元格值或格式化值,无论工作簿的布局方式或单元格的类型是什么。

    如果您想亲自尝试,可以查看实时 ASP.NET 示例here 并下载免费试用版here

    免责声明:我拥有 SpreadsheetGear LLC

    【讨论】:

      【解决方案4】:

      只需确保您的 excel 文件未打开。关闭您的 Excel 应用程序,然后启动您的程序。

      苏尼尔

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-06
        • 2021-12-20
        • 2021-03-11
        • 1970-01-01
        • 1970-01-01
        • 2021-09-11
        相关资源
        最近更新 更多