我使用ClosedXML.dll创建Excel文件,但是ClosedXML将Excel文件保存为.xlsx格式,而我的客户电脑只运行Office 2003,无法打开.xlsx文件,我该如何将.xlsx转换为.xls格式呢?
如果您有任何建议,将不胜感激。感谢大家。
如果您有任何建议,将不胜感激。感谢大家。
如果可能的话,建议您的客户安装Microsoft Office Compatibility Pack,这样他们就能在Office 2003中打开Office 2007格式的文档。
从http://www.microsoft.com/downloads下载MS Office兼容性包。
您可以使用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");
使用 .XlFileFormat.xlExcel7 格式化 Excel 95 文件。
我几天前曾发布过一个关于此问题的问题。
注意这是一个vba
解决方案。
它循环遍历一个文件夹,依次打开每个工作簿并将它们保存为.xls格式。只需更改标记为C:xxx的路径为您的.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
它支持Excel 2003及之前的格式(.xls)吗?不支持。ClosedXML仅支持Excel 2007/2010格式(.xlsx)。
最后编辑于2011年5月16日下午7:45,版本1,由MDeLeon编辑
sec_goat于7月19日下午5:54说:我不知道这是否是正确的地方,但这是我用于xls文件的解决方法。我在Interop.Excel中打开它们并将它们保存为新的文件类型。这不是最优雅的方法,但至少给人们一个想法。
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();
}