Read Excel files without using COM interop
我有个要求
0找到了一些可行的方法。
我使用openxml方法读取.xlsx文件,这对于.xls文件将失败。所以计划只对.xls文件使用OLEDB读取。
后来我在读excel文件的时候,读了一些关于jet数据库引擎相关问题的文章。Jet库不是为64位系统和所有系统设计的。
我正在64位计算机上开发应用程序,需要部署在32位服务器上。以后是否会产生问题?
是否也可以使用Microsoft.ace.oledb.12.0读取.xls文件?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | private string GetConnectionString(string filepath) { Dictionary<string, string> props = new Dictionary<string, string>(); // XLSX - Excel 2007, 2010, 2012, 2013 props["Provider"] ="Microsoft.ACE.OLEDB.12.0;"; props["Extended Properties"] ="Excel 12.0 XML"; //props["Data Source"] ="h:\\A_TestOpenXML.xlsx"; props["Data Source"] ="h:\\Book1.xls"; //is it possible to use Microsoft.ACE.OLEDB.12.0 to read .XLS files also? // XLS - Excel 2003 and Older //props["Provider"] ="Microsoft.Jet.OLEDB.4.0"; //props["Extended Properties"] ="Excel 8.0"; //props["Data Source"] ="h:\\Book1.xls"; StringBuilder sb = new StringBuilder(); foreach (KeyValuePair<string, string> prop in props) { sb.Append(prop.Key); sb.Append('='); sb.Append(prop.Value); sb.Append(';'); } return sb.ToString(); } |
是否需要在服务器上安装Office才能使用Microsoft.Ace.OLEDB.12.0?
请帮忙。
不,如果您使用ace驱动程序读取文件,则不需要在计算机上安装office。你只需要在运行应用程序的机器上安装驱动程序。
您可以使用ace驱动程序读取.xlsx文件。对于.xls文件,您需要使用edit:op confirms ace driver v12 can read.xls files as well.
另一种不用在计算机上安装Excel就可以读取.XLS文件的方法是使用NPOI,它可以在.NET中读取/写入.XLS(二进制)文件。我用了几年,效果很好(不需要你安装任何额外的/与你的应用捆绑在一起)