C#将Excel 2007(xlsx)文件转换为Excel 2003(xls)文件
我正在一个控制台应用程序,将xlsx文件转换为xls文件。 我不想从xlsx重命名为xls,因为它将在Excel 2007中打开,但它将显示为在Excel 2003中损坏的文件。寻找一种方法,将加载文件,然后将它保存为xls格式。
我目前的代码只需将xlsx重命名为xls
string fileName = @"C:\Users\L-3\Desktop\my.xlsx"; string svfileName = @"C:\Users\L-3\Desktop\ssc\my1.xls"; object oMissing = Type.Missing; var app = new Microsoft.Office.Interop.Excel.Application(); var wb = app.Workbooks.Open(fileName, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); wb.SaveAs(svfileName, XlFileFormat.xlOpenXMLTemplate, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); app.Quit();
尝试用XlFileFormat.xlExcel9795
保存。 你也可以使用XlFileFormat.xlWorkbookNormal
你的枚举是错误的,而不是XlFileFormat.xlOpenXMLTemplate你想XlFileFormat.xlExcel8 ,所以你的代码将是这样的:
string fileName = @"C:\Users\L-3\Desktop\my.xlsx"; string svfileName = @"C:\Users\L-3\Desktop\ssc\my1.xls"; object oMissing = Type.Missing; var app = new Microsoft.Office.Interop.Excel.Application(); var wb = app.Workbooks.Open(fileName, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing, oMissing); wb.SaveAs(svfileName, XlFileFormat.xlExcel8, Type.Missing, Type.Missing, Type.Missing, Type.Missing, XlSaveAsAccessMode.xlExclusive, Type.Missing, Type.Missing, Type.Missing, Type.Missing, Type.Missing); app.Quit();
更多信息在这里 。
我从这里find了以下代码片段:
// Create new XLSX file. var xlsxFile = new ExcelFile(); // Load data from XLSX file. xlsxFile.LoadXlsx(fileName + ".xls", XlsxOptions.PreserveMakeCopy); // Save XLSX file to XLS file. xlsxFile.SaveXls(fileName + ".xls");
它使用这个组件 。
我认为这有你正在寻找的答案:
什么是Excel 97-2003正确的`XlFileFormat`枚举
您正在使用文件格式xlOpenXMLTemplate
。 尝试使用xlExcel8
来代替? 这应该是97-2003 Workbooks的文件格式。