在C#中读取Excel文件时出现问题

时间:2009-12-21 16:25:23

标签: c# excel oledb

我正在使用此代码

阅读带有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文件中,此单元格具有数值。

有人有想法吗?

4 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

我有这个确切的问题并使用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);

答案 2 :(得分:0)

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

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

免责声明:我拥有SpreadsheetGear LLC

答案 3 :(得分:-1)

确保您的Excel文件未打开。关闭您的Excel应用程序&然后开始你的计划。

苏尼