C#将Excel 2007(xlsx)文件转换为Excel 2003(xls)文件

时间:2013-03-21 13:17:58

标签: c# excel interop excel-2007

我正在开发一个控制台应用程序,它将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();

4 个答案:

答案 0 :(得分:4)

你的枚举是错误的,而不是 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();

更多信息here

答案 1 :(得分:1)

尝试使用XlFileFormat.xlExcel9795保存。您也可以使用XlFileFormat.xlWorkbookNormal

答案 2 :(得分:0)

我从here找到了以下代码段:

// 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");

它使用this component

答案 3 :(得分:0)

我认为这有你想要的答案:

What is the correct `XlFileFormat` enumeration for Excel 97-2003

您使用的是文件格式xlOpenXMLTemplate。尝试使用xlExcel8代替?这应该是97-2003工作簿的文件格式。