6

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

4 回答 4

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();

更多信息在这里

于 2013-03-21T13:22:10.477 回答
1

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

于 2013-03-21T14:28:15.297 回答
0

我从这里找到了以下片段:

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

它使用这个组件

于 2013-03-21T13:23:05.840 回答
0

我认为这有您正在寻找的答案:

Excel 97-2003 的正确“XlFileFormat”枚举是什么

您正在使用文件格式xlOpenXMLTemplate。尝试xlExcel8改用?那应该是 97-2003 Workbooks 的文件格式。

于 2013-03-21T13:26:27.240 回答