批量将 XLS 转换为 XLSX

批量将 XLS 转换为 XLSX

我必须使用只能导出 XLS 文件的旧应用程序,并且我使用只能读取 XLSX 文件的 EPPlus 库在 .NET 中编写程序。

将它们从 XLS 批量转换为 XLSX 的最简单方法是什么?

答案1

查看 Office 迁移规划管理器。

该工具包还包含 Office 文件转换器 (OFC),它支持将文档从二进制格式批量转换为 OpenXML 格式。(科技网

Technet 概述

下载链接

请注意,您还需要Microsoft Office Compatibility Pack for Word, Excel, and PowerPoint File FormatsOFC 才能工作。
这两种工具似乎都不再受支持。

答案2

我建议使用宏来处理文件夹中的文件,以将它们从 xls 转换为 xlsx。此代码假定所有文件都位于一个文件夹中,并且所有 xls 文件都需要转换,但如果您想选择单个文件,可以更新此代码。

此代码需要从 Excel 2007 或更高版本的工作簿运行。

Option Explicit

' Convert all xls files in selected folder to xlsx

Public Sub convertXLStoXLSX()

    Dim FSO As Scripting.FileSystemObject
    Dim strConversionPath As String
    Dim fFile As File
    Dim fFolder As Folder
    Dim wkbConvert As Workbook

    ' Open dialog and select folder
    With Application.FileDialog(msoFileDialogFolderPicker)
        .AllowMultiSelect = False
        .Show
        On Error Resume Next ' Prevent debug mode if user cancels selection
        strConversionPath = .SelectedItems(1)
        On Error GoTo 0      ' Re-enable default error handling
    End With

    Set FSO = New Scripting.FileSystemObject

    ' Check if the folder exists
    If FSO.FolderExists(strConversionPath) Then
        Set fFolder = FSO.GetFolder(strConversionPath)

        ' Disable confirmation dialogs (to prevent "unsaved changes" dialog popping up)
        ' and screen updates (to speed up conversion)
        Application.DisplayAlerts = False
        Application.ScreenUpdating = False

        ' Loop through files, find the .xls files
        For Each fFile In fFolder.Files
            If LCase$(Right(fFile.Name, 4)) = ".xls" Then
                ' Open temporary workbook
                Set wkbConvert = Workbooks.Open(fFile.Path)
                ' Save as OpenXML workbook - if your .xls files contain macros
                ' then change to FileFormat:=xlOpenXMLWorkbookMacroEnabled
                wkbConvert.SaveAs FSO.BuildPath(fFile.ParentFolder, _
                                    Left(fFile.Name, Len(fFile.Name) - 4)) & ".xlsx", _
                                  FileFormat:=xlOpenXMLWorkbook
                wkbConvert.Close SaveChanges:=False
                ' Delete original file
                fFile.Delete Force:=True
            End If
        Next fFile

        ' Re-enable confirmation dialogs and screen updates
        Application.DisplayAlerts = True
        Application.ScreenUpdating = True

    End If

End Sub

笔记:如果您要转换的文件包含宏,则需要更新以FileFormat:=xlOpenXMLWorkbook读取FileFormat:=xlOpenXMLWorkbookMacroEnabled。或者,如果您不需要转换文件中的宏代码,则可以将其保留,并在将其转换为 xlsx 格式时删除宏。

答案3

因此我编写了一个简单的 VBScript,以静默方式将 .xls 文件转换为 .xlsx。

./convert-xls-xlsx.vbs {path to folder containing .xls files}

转换-xls-xlsx.vbs:

Set args = WScript.Arguments
strPath = args(0)
strPath = CreateObject("Scripting.FileSystemObject").GetAbsolutePathName(strPath)
Set objExcel = CreateObject("Excel.Application")
objExcel.Visible = False
objExcel.DisplayAlerts = False
Set objFso = CreateObject("Scripting.FileSystemObject")
Set objFolder = objFso.GetFolder(strPath)
For Each objFile In objFolder.Files
    fileName = objFile.Path
    If (objFso.GetExtensionName(objFile.Path) = "xls") Then
        Set objWorkbook = objExcel.Workbooks.Open(fileName)
        saveFileName = Replace(fileName,".xls",".xlsx")
        objWorkbook.SaveAs saveFileName,51
        objWorkbook.Close()
        objExcel.Application.DisplayAlerts =  True
    End If
Next
MsgBox "Finished conversion"

注意:注意文件夹路径中的空格,如果路径中间有空格,请将路径放在引号中。

答案4

如果您安装了 MsOffice,那么这个工具可能值得下载以进行快速修复。

http://www.softinterface.com/Convert-XLS/Features/Convert-XLS-To-XLSX.htm

当您选择一个文件夹来查看转换后的 xls 文件时,请确保勾选使用 MS Office 进行转换的转换工具选项,而不是他们自己的转换器。

如果您使用他们自己的转换器,单元格中的颜色会丢失,并且似乎会出现单张纸。如果您使用 MsOffice,因为转换器似乎运行良好。快速修复的好工具。

相关内容