所以我知道要将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}
我得到指定的包无效。缺少主要部分。
答案 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);