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的文件格式。