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);
所以我知道要将 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);