OpenXML 访问以编程方式保存为 XLSX 的 xls 文件

OpenXML access xls file saved as XLSX programmatically

所以我知道要将 xls 转换为 xlsx 文件,您需要物理保存文件,所以我这样做,使用互操作我物理打开文件并使用 SaveAs,这与以正常方式保存相同。我的问题是,如果我打开文件并将其保存为正常方式,我就可以访问它,但如果我以编程方式进行(见下文),它将失败

using excel = Microsoft.Office.Interop.Excel;
excel.Workbook workbook = Globals.ThisAddIn.Application.Workbooks.Open(txbBrowse.Text);
                workbook.SaveAs(newFileName, excel.XlFileFormat.xlOpenXMLWorkbook);
                workbook.Close();

如果我现在打开这个文件,它将正常打开而不会说它已损坏,但是如果我尝试通过 OpenXML 访问它

 using (var spreadsheet = SpreadsheetDocument.Open(filename, true, new OpenSettings{ AutoSave = true }))
        {//...do something here}

我得到指定的包无效。缺少主要部分。

您好,我能够通过使用互操作打开 xls 文件并使用另存为选项将其另存为 xlsx 来实现我想要的,然后我所要做的就是复制创建新 xlsx 文件的副本因此 excel 生成了我需要的依赖项。

  excel.Workbook workbook = Globals.ThisAddIn.Application.Workbooks.Open(txbBrowse.Text);
                workbook.SaveAs(newFileName, excel.XlFileFormat.xlOpenXMLWorkbook);
                workbook.Close();
FileInfo file = new FileInfo(filePathCopy);
        if (file.Exists)
            file.Delete();
        File.Copy(filePathOriginal, filePathCopy);