关于c#:在不使用COM互操作的情况下读取Excel文件

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文件,您需要使用Microsoft.Jet.OLEDB.4.0驱动程序edit:op confirms ace driver v12 can read.xls files as well.

另一种不用在计算机上安装Excel就可以读取.XLS文件的方法是使用NPOI,它可以在.NET中读取/写入.XLS(二进制)文件。我用了几年,效果很好(不需要你安装任何额外的/与你的应用捆绑在一起)