21
九
工作需要,要实现从Excel文件导入数据的功能,问题不难,但也有点弯弯绕。
首先读取Excel文件最简单的方法是使用微软Access的Jet引擎来把Excel文件当做数据集来处理,Excel的每个WorkSheet都可以看做成一张表。
Jet的数据库连接串:
Office 2000~2003
Provider=Microsoft.Jet.OleDb.4.0;Data Source=filename.xls;Extended Properties='Excel 8.0;HDR=YES'
Office 2007
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=filename.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
首先读取Excel文件最简单的方法是使用微软Access的Jet引擎来把Excel文件当做数据集来处理,Excel的每个WorkSheet都可以看做成一张表。
Jet的数据库连接串:
Office 2000~2003
Provider=Microsoft.Jet.OleDb.4.0;Data Source=filename.xls;Extended Properties='Excel 8.0;HDR=YES'
Office 2007
Provider=Microsoft.ACE.OLEDB.12.0;Data Source=filename.xlsx;Extended Properties="Excel 12.0 Xml;HDR=YES;IMEX=1";
更多链接串请参见:www.connectionstrings.com/excel
但是Office 现在还没有提供64位版本,所以Jet引擎也没提供64位支持,而我们的IIS是跑在64位服务器上的,虽然能降下来以32位模式运行,但是。。。肯定不是解决问题的最好方案,所以只好去求助第三方解析库了。
目前用到的是开源的ExcelDataReader:http://exceldatareader.codeplex.com/ ,同时支持Office 2000 ~ 2007,但在测试的过程中发现对包含中文的Office 2000 ~2003 文件支持不好,会有乱码产生,问题进一步研究中。
暂时打算采用CodeProject上的 http://www.codeproject.com/KB/office/ExcelReader.aspx ,但这个只支持Office 2000~2003 ,所以只好混着用了,先实现功能,然后再继续寻找更好的解决方案。
归类于:数据库 标签: Excel 解析
已经有 1 评论了
发表评论

用了下ExcelDataReader这个组件,发现2003确实不好用,但是2007感觉也有问题,最头疼的就是如果这个EXCEL有格式,比如有边框,居中之类的,导入操作时,就会发现传的值有些就有错误,不知道有什么好的方法么