使用Python实现XLS和XLSX之间的相互转换
目录
- python库安装
- XLS格式与XLSX格式互转
- Python 将XLS转为XLSX
- Python 将XLSX转为XLS
- 拓展:实现Excel文件xls与xlsx格式批量互相转换
- python实现方法
- vbA实现方法
Python库安装
所需Python库 - Spire.XLS for Pythonpython。该Python库支持多种对Excel文档的编程操作,包括创建、读取、编辑、转换等。可以通过此链接下载产品包后再从本地路径安装,也可以直接使用以下pip命令安装:
pip install Spire.XLS
XLS格式与XLSX格式互转
XLSX格式因其基于XML的结构、更强大的功能支持和安全性,成为现代Excel文件处理的首选格式。而XLS格式则因其在较旧版本的Excel中的兼容性和特定功能的使用而仍有其特定的应用场景。
要使用Python在这两种格式件实现灵活转换,参考以下步骤:
- 创建 Workbook 工作簿对象;
- 使用 LoadFromFile() 方法加载 .xls 或 .xlsx文件;
- 使用 SaveToFile(fileName, version) 方法实现转换。
代码示例如下:
Python 将XLS转为XcQTAUnSrPvLSX
from spire.xls import * from spire.xls.common import * # 加载XLSX文件 workbook = Workbook() workbook.LoadFromFile("示例.xlsx") # 将XLSX文件另存为XLS格式 workbook.SaveToFile("Xlsx转Xls.xls", ExcelVersion.Version97to2003) workbook.Dispose()
Python 将XLSX转为XLS
from spire.xls import * from spire.xls.common import * # 加载XLS文件 workbook = Workbook() workbook.LoadFromFile("示例.xls") # 将XLS文件另存为XLSX格式 workbook.SaveToFile("Xls转Xlsx.xlsx", ExcelVersion.Version2016) workbook.Dispose()
拓展:实现Excel文件xls与xlsx格式批量互相转换
python实现方法
将文件夹中的所有xls或xlsx文件转换为xlsx或xls文件
import win32com.client as win32 # 需安装pywin32 import os.path import glob excel = win32.gencache.EnsuRedispatch('Excel.Application') #简易使用方法 #filename = r'E:\xlsx\1.xls' #wb = excel.Workbooks.Open(filename) #wb.SaveAs(filename+'x', FileFormat=51) #FileFormat=51 是 .xlsx 的扩展 #wb.Close() #FileFormat=56 是 .xls 的扩展 #excel.Application.Quit() def xls2xlsx(xls_path, xlsx_path): # xls_path参数为待转换的xls文件所在文件夹 # xlsx_path参数为转换完成的xlsx文件保存文件夹 # 当xlsx保存文件夹存在同名原xls时,会弹窗提示是否替换,建议保存至空文件夹 path_list = glob.glob(xls_path + '\\*.xls') # 获取文件夹下所有xls for file in path_list: filename = os.path.basename(file).replace编程客栈('.xls', '.xlsx') # 获取文件名 wb = excel.Workbooks.Open(file) wb.SaveAs(xlsx_path + '\\' + filename, FileFormat=51) # xlsx为51 wb.Close() excel.Application.Quit() print('xls2xlsx转换完成') def xlsx2xls(xlsx_path, xls_path): # xlsx_path参数为待转换的xlsx文件所在文件夹 # xls_path参数为转换完成的xls文件保存文件夹 # 当xls保存文件夹存在同名原xlsx时,会弹窗提示是否替换,建议保存至空文件夹 path_list = glob.glob(xlsx_path + '\\*.xlsx') # 获取文件夹下所有xlsx for file in path_list: filename = os.path.basename(file).replace('.xlsx', '.xls') # 获取文件名 wb = excel.Workbooks.Open(file) wb.SaveAs(xls_path + '\\' + filename, FileFormat=56) # xls为56 wb.Close() excel.Application.Quit() print('xlsx2xls转换完成') if __name__ == '__main__': xls_path = r'E:\xlsx\xls' xlsx_path = r'E:\xlsx\xlsx' xls2xlsx(xls_path, xlsx_path) #xlsx2xls(xlsx_path, xls_path)
VBA实现方法
将文件夹中的所有xls或xlsx文件转换为xlsx或xls文件;保存时如果存在同名文件,则会覆盖
Function xls2xlsx(xls_path$, save_path$) '将xls_path文件夹中所有xls文件转为xlsx格式,保存至save_path文件夹;注意同名覆盖 Dim fso As Object, wb As Workbook, save_file$ Application.ScreenUpdating = False '关闭屏幕更新,加快程序运行 Application.DisplayAlerts = False '不显示警告信息 Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(save_path) Then fso.C编程客栈reateFolder (save_path) '创建文件夹 For Each f In fso.GetFolder(xls_path).Files '遍历文件夹里文件 If fso.GetExtensionName(f.Name) = "xls" Then save_file = save_path & "\" & f.Name & "x" '保存文件全名(文件路径、文件名、扩展名) Set wb = Workbooks.Open(f) wb.SaveAs filename:=save_file, FileFormat:=xlOpenXMLWorkbook wb.Close (False) End If Next Application.ScreenUpdating android= True Application.DisplayAlerts = True End Function Function xlsx2xls(xlsx_path$, save_path$) '将xlsx_path文件夹中所有xlsx文件转为xls格式,保存至save_path文件夹;注意同名覆盖 Dim fso As Object, wb As Workbook, save_file$ Application.ScreenUpdating = False '关闭屏幕更新,加快程序运行 Application.DisplayAlerts = False '不显示警告信息 Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FolderExists(save_path) Then fso.CreateFolder (save_path) '创建文件夹 For Each f In fso.GetFolder(xlsx_path).Files '遍历文件夹里文件 If fso.GetExtensionName(f.Name) = "xlsx" Then save_file = save_path & "\" & fso.GetBaseName(f.Name) & ".xls" '保存文件全名(文件路径、文件名、扩展名) Set wb = Workbooks.Open(f) wb.SaveAs filename:=save_file, FileFormat:=xlExcel8 wb.Close (False) End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End Function Private Sub xls和xlsx转换测试() Dim file_path$, save_path$ file_path = "E:\测试\xls" save_path = "E:\测试\xlsx" a = xls2xlsx(file_path, save_path) '2种调用方式 ' Call xlsx2xls(save_path, file_path) End Sub
以上就是使用Python实现XLS和XLSX之间的相互转换的详细内容,更多关于Python XLS和XLSX相互转换的资料请关注编程客栈(www.devze.com)其它相关文章!
精彩评论