【python办公自动化】openpyxl如何操作xls文件——把xls文件另存为xlsx文件

前言

Openpyxl 在处理起excel表格是非常方便的。然而,openpyxl只支持xlsx文件的处理,并不能支持xls文件。又不想换第三方库,又想处理xls文件,于是想了个折中的方法,那就是将xls文件转换成xlsx文件。再用openpyxl进行处理。

代码如下:

def xls2xlsx(file_name):
    """
    将xls文件另存为xlsx文件
    
    :param file_name: 要转换的文件路径
    :returns: new_excel_file_path 返回新的xlsx文件的路径
    """
    excel_file_path = file_name
    import win32com.client
    excel = win32com.client.gencache.EnsureDispatch('Excel.Application')
    wb = excel.Workbooks.Open(excel_file_path)

    new_excel_file_path = r"{old_file_path}x".format(old_file_path=excel_file_path)
    if os.path.exists(new_excel_file_path):  # 先删掉新复制的文件
        os.remove(new_excel_file_path)
    wb.SaveAs(new_excel_file_path, FileFormat=51)# 51 表示的是xlsx格式
    wb.Close()
    excel.Application.Quit()
    return new_excel_file_path

该函数在调用之后返回新生成的xlsx文件的路径

把新生成的文件再用openpyxl库进行处理。

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
可以使用Python中的`openpyxl`库和`os`库来实现将指定文件夹中的xls文件转换为xlsx格式。 首先需要安装`openpyxl`库,可以使用以下命令进行安装: ``` pip install openpyxl ``` 然后可以使用以下代码来实现将指定文件夹中的xls文件转换为xlsx格式: ```python import os from openpyxl import Workbook from openpyxl.utils import get_column_letter from openpyxl import load_workbook # 设置文件夹路径 folder_path = 'your_folder_path' # 遍历文件夹中的所有文件 for filename in os.listdir(folder_path): if filename.endswith('.xls'): # 构造xls文件的路径 xls_file_path = os.path.join(folder_path, filename) # 构造xlsx文件的路径 xlsx_file_path = os.path.join(folder_path, filename[:-4] + '.xlsx') # 打开xls文件 wb = load_workbook(filename=xls_file_path) # 新建一个xlsx文件 new_wb = Workbook() # 遍历xls文件中的每个工作表 for sheet_name in wb.sheetnames: # 获取工作表对象 ws = wb[sheet_name] # 新建一个xlsx工作表 new_ws = new_wb.create_sheet(title=sheet_name) # 遍历工作表中的每个单元格 for row in ws.rows: for old_cell in row: # 获取单元格的列和行 col = get_column_letter(old_cell.column) row = old_cell.row # 获取单元格的值和样式 value = old_cell.value style = old_cell.style # 在新的xlsx工作表中写入单元格的值和样式 new_cell = new_ws['{}{}'.format(col, row)] new_cell.value = value new_cell.style = style # 保存xlsx文件 new_wb.save(filename=xlsx_file_path) # 删除原始的xls文件 os.remove(xls_file_path) ``` 这段代码会遍历指定文件夹中的所有文件,找到以`.xls`为后缀的文件,然后将其转换为`.xlsx`格式保存。最后还会删除原始的`.xls`文件
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

攻城狮白玉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值