You need to enable JavaScript to run this app. 如何使用Python实现.xls格式Excel文件内所有数据的居中对齐设置
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Python实现.xls格式Excel文件内所有数据的居中对齐设置

旧版.xls文件全表设置居中对齐的Python实现方案

依赖库适配说明

  • 注意:.xls是Excel 97-2003的二进制格式,openpyxl、pandas等常用数据处理库原生不支持对该格式的格式读写操作,强制使用会直接报错。
  • 适配该格式的成熟工具链为:xlrd(读取旧版.xls内容与原有格式)+ xlwt(写入旧版.xls格式,支持自定义单元格属性)+ xlutils(实现只读工作簿到可编辑工作簿的无损拷贝)。

踩坑预警:xlrd从2.0版本开始完全移除了对.xls格式的支持,仅能处理.xlsx文件,安装时必须锁定1.2.0版本,否则读取文件会直接抛出格式不兼容错误。

实现步骤

1. 安装指定版本依赖

pip install xlrd==1.2.0 xlwt xlutils

2. 核心实现代码

代码逻辑会保留原文件所有的字体、填充、边框、数字格式,仅修改对齐属性为水平+垂直居中,不会破坏原有内容格式:

import xlrd
import xlwt
from xlutils.copy import copy as xl_copy

# 替换为你自己的文件路径
SOURCE_FILE = "待调整的原始文件.xls"
TARGET_FILE = "调整完成的居中对齐文件.xls"

# 开启格式信息读取,保留原有单元格样式
read_book = xlrd.open_workbook(SOURCE_FILE, formatting_info=True)
# 将只读工作簿拷贝为可编辑版本,避免原有内容丢失
edit_book = xl_copy(read_book)

# 遍历所有工作表
for sheet_num in range(read_book.nsheets):
    origin_sheet = read_book.sheet_by_index(sheet_num)
    target_sheet = edit_book.get_sheet(sheet_num)

    # 遍历当前工作表所有已使用的行、列范围
    for row in range(origin_sheet.nrows):
        for col in range(origin_sheet.ncols):
            # 读取当前单元格原有样式索引,为后续修改对齐属性做准备
            origin_style_index = origin_sheet.cell_xf_index(row, col)
            # 基于原有样式创建新的样式对象
            new_cell_style = xlwt.XFStyle()
            new_cell_style.xf_index = origin_style_index
            # 配置居中规则:水平居中 + 垂直居中
            new_cell_style.alignment = xlwt.Alignment()
            new_cell_style.alignment.horz = xlwt.Alignment.HORZ_CENTER
            new_cell_style.alignment.vert = xlwt.Alignment.VERT_CENTER
            # 将修改后的样式应用到单元格,同步保留原有单元格值
            target_sheet.write(row, col, origin_sheet.cell_value(row, col), new_cell_style)

# 保存最终调整完成的文件
edit_book.save(TARGET_FILE)

常见问题排查

  • 读取文件时报formatting_info=True参数无效:检查xlrd版本,2.0+版本完全关闭了对.xls的格式读取能力,必须降级到1.2.0版本
  • 调整后原有格式全部丢失:检查代码中是否直接给单元格套用了全新的空白样式,没有继承原有单元格的样式索引
  • 运行后找不到原有数据:检查是否没有通过xlutils的copy方法转换工作簿,直接在xlrd返回的只读对象上写入——xlrd读取的工作簿是完全只读的,无法直接编辑
  • 如果确认文件实际是xlsx格式(仅修改后缀为xls),无需使用上述工具链,可直接用openpyxl加载后批量修改单元格对齐属性实现需求,兼容性更好

内容的提问来源于stack exchange,提问作者user15540415

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 20:15:07