当前位置: 代码网 > it编程>前端脚本>Python > 使用Python实现XLS和XLSX之间的相互转换

使用Python实现XLS和XLSX之间的相互转换

2024年09月18日 Python 我要评论
python库安装所需python库-spire.xls for python。该python库支持多种对excel文档的编程操作,包括创建、读取、编辑、转换等。可以通过此链接下载产品包后再从本地路径

python库安装

所需python库 - spire.xls for python。该python库支持多种对excel文档的编程操作,包括创建、读取、编辑、转换等。可以通过此链接下载产品包后再从本地路径安装,也可以直接使用以下pip命令安装:

pip install spire.xls

xls格式与xlsx格式互转

xlsx格式因其基于xml的结构、更强大的功能支持和安全性,成为现代excel文件处理的首选格式。而xls格式则因其在较旧版本的excel中的兼容性和特定功能的使用而仍有其特定的应用场景。

要使用python在这两种格式件实现灵活转换,参考以下步骤:

  • 创建 workbook 工作簿对象;
  • 使用 loadfromfile() 方法加载 .xls 或 .xlsx文件;
  • 使用 savetofile(filename, version) 方法实现转换。

代码示例如下:

python 将xls转为xlsx

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.createfolder (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 = 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相互转换的资料请关注代码网其它相关文章!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com