代码之家  ›  专栏  ›  技术社区  ›  user366312

如何使用ADO.NET读取.XLSX(Excel 2007)文件?我发现“找不到可安装的ISAM”-错误

  •  5
  • user366312  · 技术社区  · 14 年前

    我需要在里面工作 .net 2.0

    这是我的源代码,我已经安装了 AccessDatabaseEngine.exe .

    但仍有例外:

    “找不到可安装的ISAM”。

    "Extended Properties=Excel 8.0" 在连接字符串中。

    static void Main(string[] args)
    {
        DataSet dataSet = new DataSet();
    
        OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=|Data Directory|\HSC.xlsx;Extended Properties=Excel 12.0;HDR=YES;");           
        OleDbDataAdapter dataAdapter= new OleDbDataAdapter("select * from [Sheet1$]", connection);
    
        dataAdapter.Fill(dataSet);
    }
    
    3 回复  |  直到 10 年前
        1
  •  9
  •   Fionnuala    14 年前

    根据Carl Prothman的说法

     Extended Properties="Excel 12.0 Xml;
    

    -- http://www.connectionstrings.com/excel-2007

    更详细地说:

     OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\Docs\\Book2.xlsx;Extended Properties='Excel 12.0 xml;HDR=YES;'");           
    

        2
  •  2
  •   Community CDub    8 年前

    我更喜欢使用Microsoft OpenXML 2.0sdk来实现这种功能。它有一个非常好的接口,而且它不要求在机器上安装Office来读取XLSX文件,这是一件好事。

    我在我的手机上写这篇文章,很难提供链接,但谷歌搜索应该很容易为你找到它。

    试试看。我想你会喜欢的。

    如果你 OleDb 相反。

    这意味着你要做这样的事情来连接:

    OleDbConnection connection = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" + 
                     "Data Source='" + filename + "';" + 
                     "Extended Properties=\"Excel 8.0;HDR=No;IMEX=1;\"";);
    

    OleDbDataAdapter objAdapter = new OleDbDataAdapter("select * from [Sheet1$]", connection);
    

    试试看!请注意 Jet 有一些奇怪的逻辑来决定一列是不是数字。请参阅以下SO问题以了解详细信息: Problem with using OleDbDataAdapter to fetch data from a Excel sheet

        3
  •  1
  •   Community CDub    6 年前

    MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;
    Data Source='D:\csharp-Excel.xls';Extended Properties='Excel 12.0 Xml;HDR=Yes;'");
    
    推荐文章