【问题标题】:Accessing Excel 2007 file format with OLEDB使用 OLEDB 访问 Excel 2007 文件格式
【发布时间】:2013-07-25 01:10:49
【问题描述】:

我目前正在尝试访问不包含 Microsoft Office 的服务器上的 excel 2007 文件。我的连接字符串是这样的。

  String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
  "Data Source=" + file_path + ";Extended Properties=Excel 8.0;";

但这适用于 2003 格式,可以正常工作。我想利用 2007 xml 格式。但是我无法通过以下连接访问该文件。(目标服务器上没有安装Office,不知道是不是这个原因。

  String connString = "Provider=Microsoft.Jet.OLEDB.4.0;" +
 "DataSource=" + file_path + ";HDR=Yes;IMEX=1;Extended Properties=Excel 12.0;";

我不断收到“找不到可安装的 isam”。错误。

编辑 如果这有助于清除任何问题,我正在使用 Visual Studio 2005 并使用 C# 进行开发。

【问题讨论】:

    标签: c# excel ms-office oledb


    【解决方案1】:

    你可以试试这个连接字符串:

    string connectionString = 
        "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + 
        file_name + 
        ";Extended Properties=\"Excel 12.0 Xml;HDR=YES\"";
    

    请注意,虽然 x64 系统不支持此驱动程序,但它不会工作。

    【讨论】:

    • 而且,如果您没有安装 Excel,您可以通过microsoft.com/downloads/… 从 MS 下载 AccessDatabaseEngine。这仍然允许您使用 ODBC 连接到 Excel。
    • 对于 x64 系统,您需要将项目的目标平台设置为 x86。
    【解决方案2】:

    您应该尝试使用Linq to Excel 开源项目从 Excel 电子表格中查询数据。您可以使用 LINQ 语句查询数据,Linq to Excel 负责建立 OLEDB 连接并创建 SQL 语句。

    这是一个从 Excel 电子表格查询数据是多么容易的示例

    var book = new ExcelQueryFactory("pathToExcelFile");
    var rows = from x in book.Worksheet() 
               select new                
               {
                 Name = x["Name"],
                 BirthDate = x["BirthDate"].Cast<DateTime>()
               };
    

    查看Linq to Excel intro video,了解有关开源项目的更多信息。

    【讨论】:

      【解决方案3】:

      SpreadsheetGear for .NET 让您无需依赖 OleDB、COM Interop 或任何其他可能在服务器上产生问题的 API 即可打开工作簿。

      您可以查看实时 ASP.NET 示例here 并下载免费试用版here

      免责声明:我拥有 SpreadsheetGear LLC

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-14
        • 2013-12-24
        • 1970-01-01
        • 2015-07-16
        • 1970-01-01
        • 2011-07-01
        相关资源
        最近更新 更多