当前位置:首页 > Python > 正文

Python openpyxl教程:设置Excel行高与列宽 | Python自动化办公指南

Python openpyxl教程:设置Excel行高与列宽

使用openpyxl库自动化Excel格式设置

为什么需要设置Excel行高和列宽?

在Excel数据处理自动化中,格式设置是提升可读性的关键步骤:

  • 改善数据可读性和美观度
  • 确保内容完整显示
  • 突出关键信息
  • 创建专业报表
  • 自动化重复性格式设置任务

Python的openpyxl库提供了强大的Excel文件操作能力,包括行高和列宽的精确设置。

安装openpyxl

在开始之前,请确保已安装openpyxl库:

pip install openpyxl

基础操作:设置行高

设置单行高度

from openpyxl import Workbook

# 创建工作簿和工作表
wb = Workbook()
ws = wb.active

# 设置第一行高度为30(单位:点)
ws.row_dimensions[1].height = 30

# 保存文件
wb.save("row_height_example.xlsx")

设置多行高度

# 设置多行高度
for row in range(5, 15):
    ws.row_dimensions[row].height = 20

# 设置标题行高度
ws.row_dimensions[1].height = 40

基础操作:设置列宽

设置单列宽度

from openpyxl import Workbook

wb = Workbook()
ws = wb.active

# 设置A列宽度为20(单位:字符)
ws.column_dimensions['A'].width = 20

wb.save("column_width_example.xlsx")

设置多列宽度

# 设置B到D列宽度
for col in ['B', 'C', 'D']:
    ws.column_dimensions[col].width = 15

# 设置第一列宽度
ws.column_dimensions['A'].width = 25

实用技巧:自动调整行高列宽

根据内容自动调整列宽

openpyxl没有内置的自动调整功能,但可以模拟:

def auto_adjust_columns(ws):
    for column in ws.columns:
        max_length = 0
        column_letter = column[0].column_letter
        for cell in column:
            try:
                if len(str(cell.value)) > max_length:
                    max_length = len(str(cell.value))
            except:
                pass
        adjusted_width = (max_length + 2) * 1.2
        ws.column_dimensions[column_letter].width = adjusted_width

# 使用函数
auto_adjust_columns(ws)

综合示例

创建员工信息表并设置格式:

from openpyxl import Workbook
from openpyxl.styles import Font

# 创建工作簿
wb = Workbook()
ws = wb.active
ws.title = "员工信息"

# 添加标题行
headers = ["ID", "姓名", "部门", "职位", "入职日期"]
ws.append(headers)

# 添加数据
data = [
    [101, "张三", "技术部", "工程师", "2020-03-15"],
    [102, "李四", "市场部", "经理", "2019-11-22"],
    [103, "王五", "财务部", "会计", "2021-05-30"]
]
for row in data:
    ws.append(row)

# 设置行高
ws.row_dimensions[1].height = 30 # 标题行高度
for i in range(2, 5):
    ws.row_dimensions[i].height = 22 # 数据行高度

# 设置列宽
ws.column_dimensions['A'].width = 8 # ID
ws.column_dimensions['B'].width = 12 # 姓名
ws.column_dimensions['C'].width = 15 # 部门
ws.column_dimensions['D'].width = 18 # 职位
ws.column_dimensions['E'].width = 12 # 入职日期

# 设置标题字体
for cell in ws[1]:
    cell.font = Font(bold=True)

# 保存文件
wb.save("employee_data.xlsx")

最佳实践总结

  • 行高单位是(points),列宽单位是字符(characters)
  • 设置行高:ws.row_dimensions[行号].height = 值
  • 设置列宽:ws.column_dimensions['列字母'].width = 值
  • 典型行高值:默认15,标题行25-40,数据行18-25
  • 典型列宽值:ID列8-10,名称列12-15,描述列20-30,日期列12-15
  • 结合字体样式和单元格对齐方式创建专业报表

发表评论