【问题标题】:Read Excel files without using COM interop不使用 COM 互操作读取 Excel 文件
【发布时间】:2016-03-04 23:52:43
【问题描述】:

我有一个要求

不使用 COM 互操作读取 Excel 文件。

找到了一些可能的方法来做同样的事情。

我使用 openxml 方法读取 .XLSX 文件,这对于 .XLS 文件将失败。 因此计划仅对 .XLS 文件使用 oledb 读取。

后来我在阅读Excel文件时阅读了一些关于Jet数据库引擎相关问题的文章, Jet 库不是为 64 位系统而设计的。

我正在 64 位计算机上开发应用程序,需要部署在 32 位服务器上。 以后会不会出问题?

是否也可以使用 Microsoft.ACE.OLEDB.12.0 来读取 .XLS 文件?

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 驱动程序。 MS Ace download page。请参阅 MS 下载页面上的详细信息部分。

标签: c# excel oledb 32bit-64bit xls


【解决方案1】:

不,如果您使用 ACE 驱动程序读取文件,则计算机上不需要 Office。您只需在运行应用程序的机器上安装驱动程序即可。

您可以使用 ACE 驱动程序来读取 .xlsx 文件。 对于 .xls 文件,您需要使用 Microsoft.Jet.OLEDB.4.0 驱动程序 编辑:OP 确认 ACE 驱动程序 v12 也可以读取 .xls 文件。

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

【讨论】:

  • :Microsoft.Jet.OLEDB.4.0驱动需要编译x86模式才能工作吧?使用上面的代码(Microsoft.ACE.OLEDB.12.0)我可以从 Book1.xls 读取数据。
  • @Athul 那太好了。上次我使用 ACE 驱动程序读取 .xls 时它不起作用(不记得它是哪个版本,但不是 v12,所以你很好。在您的应用程序将运行的机器上安装 ACE 驱动程序,并且庆祝!:)
猜你喜欢
  • 1970-01-01
  • 2012-04-28
  • 2015-08-03
  • 1970-01-01
  • 2012-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多