Excel OpenXML,OleDB和“外部表未采用预期格式”错误

我正在使用OpenXML生成Excel文件,该文件打开后在安装了Excel 2016的桌面上没有任何问题。该文件还通过了Open XML Productivity Tool 2.5的验证。

问题是该文件被SQL Server集成服务(SSIS)处理拒绝。错误是“外部表的格式不正确”

据我所知,SSIS正在使用OLEDB处理文件。 我尝试使用以下代码在本地读取文件,并且能够重现相同的错误。

代码如下:

    var fileName = "C:\\Temp\\myExcel.xlsx";
    var connectionString = String.Empty;

    if (Path.GetExtension(fileName) == ".xlsx")
    {
        connectionString = string.Format("Provider=microsoft.ACE.OLEDB.12.0;Data Source={0};Extended Properties=\"Excel 12.0;HDR=YES;\"",fileName);
    }
    else //.xls
    {
        connectionString = string.Format("Provider=microsoft.Jet.OLEDB.4.0;Data Source={0};Extended Properties=\"Excel 8.0;HDR=YES;IMEX=1;\"",fileName);
    }

    using (OleDbConnection conn = new OleDbConnection(connectionString))
    {
        conn.Open();
        var adapter = new OleDbdataAdapter("select * from [test$]",conn);
        var excelDataSet = new DataSet();
        adapter.Fill(excelDataSet,"anyNameHere");

        var data = excelDataSet.Tables["anyNameHere"];
        foreach (DataRow row in data.Rows)
        {
            Console.Out.WriteLine(row[NAME].ToString());
        }
    }

我只能在网上发现此错误是由于错误的连接字符串(microsoft.Jet.OLEDB.4.0和Excel 8.0而不是microsoft.ACE.OLEDB.12.0和Excel 12.0)引起的,但是我已经有了

这绝对是文件本身的问题。如果我在Excel中打开文件,然后使用另存为,该问题就会消失。

我试图解压缩原始文件和重新保存的文件并比较内容,但是差异很大,保存excel时会添加很多样式,主题和xmls引用。我真的不想走那条路。

在阅读Excel时,您知道哪些部分对OleDB提供程序很重要吗?

ingkao84 回答:Excel OpenXML,OleDB和“外部表未采用预期格式”错误

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3121255.html

大家都在问