2

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

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

4

8 回答 8

5

如果可能,请让您的客户安装Microsoft Office 兼容包,这将使他们能够在 Office 2003 中打开 Office 2007 格式的文档。

于 2012-09-13T08:03:31.700 回答
2

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

于 2012-09-13T08:04:58.173 回答
1

您可以使用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");
于 2012-09-13T08:08:02.933 回答
1

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

于 2014-04-22T20:21:44.643 回答
0

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

于 2012-09-13T08:20:40.357 回答
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
于 2012-09-13T09:30:35.437 回答
0

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

于 2015-12-01T12:30:50.697 回答
-1

ClosedXML.dll 的常见问题解答

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

最后由 MDeLeon 于 2011 年 5 月 16 日下午 7:45 编辑,版本 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();
}

希望这可以帮助 ;)

于 2012-09-13T08:06:51.740 回答