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

Excel“外部表的格式不符合预期。”

  •  168
  • Sisiutl  · 技术社区  · 17 年前

    string sql = "SELECT * FROM [Sheet1$]";
    string excelConnection = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + pathname + ";Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"";
    
    using (OleDbDataAdapter adaptor = new OleDbDataAdapter(sql, excelConnection)) {
        DataSet ds = new DataSet();
        adaptor.Fill(ds);
    }
    
    25 回复  |  直到 11 年前
        1
  •  255
  •   FAtBalloon    17 年前

    使用以下连接字符串似乎可以解决大多数问题。

    public static string path = @"C:\src\RedirectApplication\RedirectApplication\301s.xlsx";
    public static string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
    
        2
  •  28
  •   Arseni Mourzenko    16 年前

    public static string connStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
    

    .xlsx ,使用这个:

    Private Const connstring As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + path + ";Extended Properties=Excel 12.0;";
    

    Private Const connstring As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" + path + ";Extended Properties=""Excel 8.0;HDR=YES;"""
    
        4
  •  9
  •   Fengtao Ding    10 年前

        5
  •  6
  •   Kamran    7 年前

    enter image description here

    4.)选择Excel 97-2003工作簿

    enter image description here

    enter image description here

        6
  •  3
  •   Community Mohan Dere    6 年前

    http://support.microsoft.com/kb/2459087

    或者,您可以修改注册表项,更改dll路径以匹配您的Access版本。

    密钥:HKCR\CLSID{3BE786A0-0366-4F5C-9434-25CF162E475E}\InprocServer32\

    共享\OFFICE14\ACEOLEDB。动态链接库

        7
  •  2
  •   John M. Black    14 年前

        8
  •  2
  •   John M    12 年前

    该问题似乎是一个导致错误的隐藏工作表。取消隐藏工作表使工作簿能够导入。

        9
  •  2
  •   Tehscript    7 年前

    如果文件是只读的,只需将其删除,它应该会再次工作。

        10
  •  2
  •   MMJ    5 年前
        11
  •  1
  •   majjam    10 年前

    this 马库斯·米里斯的帖子:

    strCon = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & importedFilePathAndName _
             & ";Extended Properties=""HTML Import;HDR=No;IMEX=1"";"
    
        12
  •  1
  •   Community Mohan Dere    6 年前

            OleDbConnection MyConnection;
            DataSet DtSet;
            OleDbDataAdapter MyCommand;
            
            MyConnection = new System.Data.OleDb.OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\\Book.xlsx;Extended Properties=Excel 12.0;");
            MyCommand = new System.Data.OleDb.OleDbDataAdapter("select * from [Sheet1$]", MyConnection);
            DtSet = new System.Data.DataSet();
            
            MyCommand.Fill(DtSet);
            dataGridView1.DataSource = DtSet.Tables[0];
            MyConnection.Close();
    
        13
  •  1
  •   kerwei    8 年前

    我的问题的背景与@zhiyazw的非常接近——基本上是试图将导出的Excel文件(在我的例子中是SSRS)设置为dtsx包中的数据源。经过一番修改,我所做的就是重命名工作表。它不必像@Smith建议的那样小写。

        14
  •  0
  •   user3140982    12 年前
        15
  •  0
  •   Andrey Belykh    12 年前
        16
  •  0
  •   Kieran Quinn    11 年前

        17
  •  0
  •   Juan    10 年前

        18
  •  0
  •   Paulo Henrique Queiroz Nelson    10 年前

    您可以使用Excel Interop以只读方式打开工作表,而不是OleDb。

    https://msdn.microsoft.com/en-us/library/microsoft.office.interop.excel.workbooks.open(v=office.15).aspx

        19
  •  0
  •   KthProg    9 年前

    当工作簿受密码保护时,可能会出现这种情况。有一些解决方法可以删除此保护,但您在网上找到的大多数示例都已过时。无论哪种方式,简单的解决方案都是手动取消对工作簿的保护,否则使用类似OpenXML的东西以编程方式删除保护。

        20
  •  0
  •   unbob    9 年前
        21
  •  0
  •   MiMFa    8 年前

        23
  •  0
  •   tbone    7 年前

    之前

    Close() 首先在StreamReader对象上,然后我就可以成功打开OleDb连接。它与Excel文件本身无关,也与OleDbConnection字符串无关(这是我最初看到的地方)。

        24
  •  0
  •   David Rogers    4 年前

        25
  •  0
  •   sd4ksb    4 年前

    这件事最近才发生在我们身上。我们的一位客户在尝试将他们的excel文件上传到我们的网站时遇到了此错误。我可以在ms excel上很好地打开xlsx文件,并且没有看到文件有任何异常。我在这里尝试了所有提到的解决方案,但都没有奏效。我找到了这个链接 Treating data as text using Microsoft.ACE.OLEDB.12.0

    <add name="ExcelTextConnection" connectionString="Provider=Microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties='Excel 12.0;HDR={1};IMEX=1'" />