在C#中打开Excel文件时,“文件格式或文件扩展名无效”

时间:2019-03-12 15:46:56

标签: c# excel ole

我有一个C#程序,可以打开一个Excel文件,读取数据,并将其导出为其他格式的Excel文件。

当我要打开的Excel文件为* .xlsx时,程序运行正常,但是当我要打开的Excel文件为* .xlsx时,出现异常(如下)。这两个文件都在Excel中打开,只有当我尝试在C#程序中打开* .xlsx文件时,才会出现异常。

代码

private List readExcel(OleDbConnection connection, string filePath, ExcelReportType rptType)
{

    Excel.Application excelApp = null;
    Excel.Workbook workbook = null;
    try
    {
        //Open connection to spreadsheet
        if (connection.State == ConnectionState.Closed)
        {
            connection.Open();
        }

        //open excel and open the workbook
        excelApp = new Excel.Application();
        workbook = excelApp.Workbooks.Open(filePath); //exception is thrown here

        //more code to read the contents of the workbook
    } 
    catch (Exception e)
    {
        Console.WriteLine(e.StackTrace);
    }
    finally
    {
        if (workbook != null)
        {
            workbook.Close();
        }

    }
}

这里是创建连接的代码,该代码在调用readExcel()之前被调用,并且不会产生任何异常。

private OleDbConnection openExcelConnection(OleDbConnection connection, string filePath)
{
    try
    {
        //establish connection to spreadsheet
        connection = new OleDbConnection("Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + filePath + "';Extended Properties=\"Excel 12.0 Xml;HDR=YES;IMEX=1\""); 

    }
    catch (Exception e)
    {
        //code to handle exception
    }
    return connection;
}

异常消息

“ Excel无法打开文件'51 .0.19.01(export).xlsx',因为文件格式或文件扩展名无效。请验证文件未损坏,并且文件扩展名与文件格式匹配。 “

堆栈跟踪

Microsoft.Office.Interop.Excel.Workbooks.Open中的

(字符串文件名,对象更新链接,对象只读,对象格式,对象密码,对象WriteResPassword,对象IgnoreReadOnlyRecommended,对象起源,对象定界符,对象可编辑,对象通知,对象转换器,对象AddToMru,对象本地,对象CorruptLoad)

我尝试过的事情

  • 我确认连接字符串的格式正确,并尝试了几种变体,但都没有奏效(https://www.connectionstrings.com/excel/
  • 我确认* .xlsx文件已在Excel中打开(并且我用几个不同的文件再现了该错误,行为是相同的。)
  • 我通过NuGet软件包管理器下载并正在使用最新的Microsoft.Office.Interop.Excel dll。
  • 我最初在打开* .xls文件时遇到问题,然后按照this question中的步骤下载了Access 2010驱动程序,该驱动程序通过* .xls文件解决了该问题。
  • 我在堆栈溢出中发现numberquestions,引用了此异常,但是它们是在用户导出到Excel或试图打开损坏的文档时发生的。我正在尝试打开一个文档,它似乎没有损坏,因为它是在Excel中打开的。

0 个答案:

没有答案