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

时间:2017-02-02 11:38:37

标签: c# excel openxml office-interop

所以我知道要将xls转换为xlsx文件,你需要物理保存文件,所以我这样做,使用interop我物理打开文件并使用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}

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

1 个答案:

答案 0 :(得分:0)

嗨我能够通过使用interop打开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);