我正在开发一个控制台应用程序,它将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();
答案 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工作簿的文件格式。