C#将.xlsx转换为.xls

我使用ClosedXML.dll来创buildExcel文件,但是ClosedXML保存Excel文件为.xlsx和我的客户端的PC只运行Office 2003,以便他们无法打开.xlsx文件,我该如何将.xlsx转换为.xls?

任何build议将不胜感激。 感谢大家。

如果可能,请求客户安装Microsoft Office兼容包 ,以便他们在Office 2003中打开Office 2007格式的文档。

您可以使用Excel c# 将XLSX转换为XLS

用这样的代码:

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

你可以试试NET Office( http://netoffice.codeplex.com/ ),它将xls转换为xlsx,所以你可以使用closedXML和文件

尝试使用ExcelDataReader和ExcelPlusPlus 。 他们是开源的,很好

就在几天前我就这个问题发了一个问题。

注意这是一个vba解决scheme。

这将通过依次打开每个工作簿并以.xls格式保存它们的文件夹循环。 只需将标记为C:xxx的path更改为.xlsx文件的位置即可。 它避免了要求最终用户做一些事情来打开你的产品,以我的经验,如果你有很多的用户,你会有些无能或不愿意安装兼容包。

 Option Explicit Sub Convert_to972003() Dim orgwb As Workbook Dim mypath As String, strfilename As String Dim nname As String '--> Error Handling On Error GoTo WhatHappened '--> Disable Alerts With Application .DisplayAlerts = False .ScreenUpdating = False End With '--> Specify location of workbooks mypath = "C:\xxx" strfilename = Dir(mypath & "\*.xlsx", vbNormal) '--> Check the specified folder contains files If Len(strfilename) = 0 Then Exit Sub '--> Start Loop, end when last file reached Do Until strfilename = "" '--> Open a workbook Set orgwb = Application.Workbooks.Open _ (mypath & "\" & strfilename) '--> Create new Filename, Save in new File Format and Close nname = Replace(strfilename, ".xlsx", ".xls") orgwb.SaveAs mypath & "\" & nname, FileFormat:=xlExcel8 orgwb.Close strfilename = Dir() Loop '--> Enable Alerts With Application .DisplayAlerts = True .ScreenUpdating = True End With Exit Sub WhatHappened: MsgBox Err.Description End Sub 

使用.XlFileFormat.xlExcel7来格式化Excel 95文件。

从ClosedXML.dll的FAQ :

它是否支持Excel 2003和之前的格式(.xls)? 不。 ClosedXML仅支持Excel 2007/2010格式(.xlsx)。

最后编辑于2011年5月16日下午7:45由MDeLeon,版本1

sec_goat Jul 19 at 5:54 PM我不知道这是否是正确的地方,但这是我用于xls文件的解决方法。 我在Interop.Excel中打开它们并将它们保存为较新的文件types。 这不是最优雅的,但至less让人们知道他们能做什么。

 public void Convert(String filesFolder) { files = Directory.GetFiles(filesFolder); var app = new Microsoft.Office.Interop.Excel.Application(); var wb = app.Workbooks.Open(file); wb.SaveAs(Filename: file + "x", FileFormat: Microsoft.Office.Interop.Excel.XlFileFormat.xlOpenXMLWorkbook); wb.Close(); app.Quit(); } 

希望这可以帮助 ;)