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

时间:2019-11-11 21:18:51

标签: excel oledb openxml

我正在使用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提供程序很重要吗?

0 个答案:

没有答案