繁体   English   中英

C#将.xlsx转换为.xls

C# Converting .xlsx to .xls

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

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

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

8 个回复

如果可能,请让您的客户安装Microsoft Office兼容包 ,这样他们就可以在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");

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

尝试使用ExcelDataReaderExcelPlusPlus 它们是开源和良好的

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

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

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

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

希望这可以帮助 ;)

1 如何使用C#将xls文件转换为xlsx文件?

我正在开发一个从excel文件中读取数据的应用程序,但是当我尝试打开它时,如果源文件以xls格式保存(使用OpenXML打开Excel工作表时文件包含损坏的数据错误),则抛出异常。 事实上,当我用xlsx格式保存这个文件时,它工作正常。 请帮我解决这个问题。 ...

2 在C#中使用NPOI将xlsx文件转换为xls

我有一个* .xlsx格式的Excel文件。 我想在我的MVC Web应用程序中将此文件转换为* .xls格式。 在我的应用程序托管服务器中,没有Microsoft.Office程序包。 请让我知道我们如何使用C#在NPOI中实现它。 提前致谢。 ...

3 在C#中将xls和xlsx转换为Datatable

我正在努力将xls和xlsx转换为c#中的datatable。 我用过这段代码。 在xls的情况下,它的工作正常。 每当我使用xlsx它不工作。 它给出了“对象引用”错误。 是否有任何其他方法将xls和xlsx转换为datatable。 我对使用'Microsoft.Jet ...

2014-09-12 12:56:31 3 7693   c#-4.0
4 用 C++ 将 XLS/XLSX 转换为 CSV

我得到了一个项目,我需要从 CSV、XLS 和 XLSX 文件导入数据,进行一些处理,然后将结果写入数据库。 我正在处理一个已经进行了一段时间的项目,并且已经有几个导入函数使用一个非常好的对象来处理带有各种分隔符等的打开文件。 这个对象是我需要执行的处理的关键。 由于 CSV 基本上是一个具有不 ...

5 在C#中使用excelcnv.exe或ofc.exe将.xls转换为.xlsx

我正在尝试使用c#代码运行'EXE'将.xls转换为.xlsx。 如果我使用控制台应用程序或cmd运行,它将成功运行并按预期工作。 但是,当我在服务器端运行它(托管在IIS中的代码,即使用w3wp.exe工作进程运行的代码)时,它无法将文件转换为.xlsx 首先,我使用Excelc ...

9 我想使用C#将.xls或.xlsx文件转换为.csv格式

我试图用C#编写代码以将.xls / .xlsx文件转换为.csv文件,打开后我将文件保存在.Csv中,但生成的文件仍然具有所有excel属性(例如合并的单元格,标头等),但是当我查看属性时,文件类型显示为.csv。 在我的代码中,我正在打开一个execl并使用SaveAs保存它。 ...

2019-08-29 03:55:53 3 66   c#/ excel
暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2021 STACKOOM.COM