C#将.xlsx转换为.xls

时间:2012-09-13 08:02:02

标签: c# .net excel

我使用ClosedXML.dll创建Excel文件,但是ClosedXML将excel文件保存为.xlsx,而我的客户端PC只运行Office 2003,因此无法打开.xlsx文件,如何将.xlsx转换为.xls?

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

8 个答案:

答案 0 :(得分:5)

如果可能,请让您的客户安装Microsoft Office Compatibility Pack,这样他们就可以在Office 2003中打开Office 2007格式的文档。

答案 1 :(得分:2)

http://www.microsoft.com/downloads下载MS Office兼容包。

答案 2 :(得分:1)

您可以Excel c#使用Convert XLSX to 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");

答案 3 :(得分:1)

您可以尝试使用NET Office(http://netoffice.codeplex.com/),它会将xls转换为xlsx,因此您可以将closedXML与文件一起使用

答案 4 :(得分:0)

尝试使用ExcelDataReaderExcelPlusPlus。它们是开源的,很好的

答案 5 :(得分:0)

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

注意这是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

答案 6 :(得分:0)

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

答案 7 :(得分:-1)

来自FAQ of ClosedXML.dll

  

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

     

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

     

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

希望这会有所帮助;)