我正在使用此代码
阅读带有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文件中,此单元格具有数值。
有人有想法吗?
答案 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应用程序&然后开始你的计划。
苏尼