2013-03-21 230 views
6

我正在研究將xlsx文件轉換爲xls文件的控制檯應用程序。我不想將它從xlsx重命名爲xls,因爲它將在Excel 2007中打開,但它將在Excel 2003中顯示爲損壞的文件。尋找一種加載文檔的方式,然後將它保存爲xls格式。C#將Excel 2007(xlsx)文件轉換爲Excel 2003(xls)文件

我當前的代碼只需重命名你想XlFileFormat.xlExcel8的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(); 

回答

1

試着用XlFileFormat.xlExcel9795保存。您也可以使用XlFileFormat.xlWorkbookNormal

+1

這會將文件保存爲Excel 95-97格式,如果您使用的任何功能> = 2003,它們將不起作用! – JMK 2013-03-21 14:52:34

+0

引發異常:「來自HRESULT的異常:0x800A03EC」 – m2pathan 2018-01-01 06:05:50

4

你枚舉是錯誤的,而不是XlFileFormat.xlOpenXMLTemplate,所以你的代碼會像這樣:

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

+0

引發異常:'來自HRESULT的異常:0x800A03EC' COMEXception未處理。它是否在你的最後? – 2013-03-21 14:13:56

+0

我認爲xlExcel8正在產生問題。 – 2013-03-21 14:28:39

+1

我只是花時間測試上面的代碼,它在我的電腦上完美運行。 – JMK 2013-03-21 14:32:00

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

+0

這將在我的應用程序中添加依賴項。 o.O – 2013-03-21 14:18:39

0

我覺得這有你要找的答案:

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

您正在使用的文件格式xlOpenXMLTemplate。嘗試使用xlExcel8而不是?這應該是97-2003 Workbooks的文件格式。

+0

它引發了一個com例外。你能創建一個控制檯並再次檢查嗎? – 2013-03-21 14:15:57

+0

不幸的是,我無法做到這一點。我注意到@JMK說這是行得通的。我確信你以前的文件格式,'xlOpenXMLTemplate'不正確。 SaveAs方法應該爲Excel 97-2003工作簿(.xls)使用正確的文件格式枚舉,這應該是xlExcel8。 – 2013-03-21 14:50:03

相關問題