Python写入自适应行列宽

在数据分析和处理过程中,表格是展示数据的重要形式。Python提供了一种方便的方式来创建和编辑Excel文件,而openpyxl库是其中最受欢迎的一个。本文将介绍如何使用openpyxl库写入Excel表格,并实现自适应行列宽,以确保数据的可读性。

使用openpyxl

首先,我们需要安装openpyxl库。可以使用以下命令进行安装:

pip install openpyxl

写入数据

下面是一个简单的例子,展示如何使用openpyxl库创建一个Excel文件并写入数据。

import openpyxl

# 创建一个新的工作簿
wb = openpyxl.Workbook()

# 选择活动工作表
ws = wb.active

# 写入数据
data = [
    ['姓名', '年龄', '城市'],
    ['张三', 25, '北京'],
    ['李四', 30, '上海'],
    ['王五', 28, '广州']
]

for row in data:
    ws.append(row)

# 保存工作簿
wb.save('example.xlsx')

自适应列宽

在上面的代码中,我们已经成功创建了一个包含姓名、年龄和城市的表格。下一步是设置自适应列宽,以确保表格中的内容不会被截断。

# 自适应列宽
for column in ws.columns:
    max_length = 0
    column_letter = openpyxl.utils.get_column_letter(column[0].column)  # 获取列字母
    for cell in column:
        try:
            if len(str(cell.value)) > max_length:
                max_length = len(cell.value)  # 找到该列最大宽度
        except:
            pass
    adjusted_width = (max_length + 2)  # 增加一些额外的宽度
    ws.column_dimensions[column_letter].width = adjusted_width  # 设置列宽

这样一来,我们就可以按照每一列的最大数据长度,为每一列设置合适的宽度。

自适应行高

除了列宽,行高的调整同样重要,尤其是在添加了较多文本内容时。以下是调整行高的示例:

# 自适应行高
for row in ws.iter_rows():
    max_height = 12  # 默认行高
    for cell in row:
        if cell.value:
            lines = str(cell.value).count('\n') + 1  # 统计行数
            max_height = max(max_height, lines * 15)  # 根据行数调整行高
    ws.row_dimensions[row[0].row].height = max_height

完整代码

将上面的代码整合在一起,我们得到以下完整代码:

import openpyxl

# 创建一个新的工作簿
wb = openpyxl.Workbook()
ws = wb.active

# 写入数据
data = [
    ['姓名', '年龄', '城市'],
    ['张三', 25, '北京'],
    ['李四', 30, '上海'],
    ['王五', 28, '广州']
]

for row in data:
    ws.append(row)

# 自适应列宽
for column in ws.columns:
    max_length = 0
    column_letter = openpyxl.utils.get_column_letter(column[0].column)
    for cell in column:
        try:
            if len(str(cell.value)) > max_length:
                max_length = len(cell.value)
        except:
            pass
    adjusted_width = (max_length + 2)
    ws.column_dimensions[column_letter].width = adjusted_width

# 自适应行高
for row in ws.iter_rows():
    max_height = 12
    for cell in row:
        if cell.value:
            lines = str(cell.value).count('\n') + 1
            max_height = max(max_height, lines * 15)
    ws.row_dimensions[row[0].row].height = max_height

# 保存工作簿
wb.save('example.xlsx')

流程图

以下是代码的流程图,展示了写入Excel表格的逻辑:

flowchart TD
    A[开始] --> B[创建工作簿]
    B --> C[选择工作表]
    C --> D[写入数据]
    D --> E[自适应列宽]
    E --> F[自适应行高]
    F --> G[保存工作簿]
    G --> H[结束]

结论

通过使用openpyxl库,我们可以方便地创建和编辑Excel文件。同时,通过自动调整行列宽可以显著提高表格的可读性。这对于数据分析和报表生成尤为重要。希望通过此次介绍,能够帮助您在使用Python进行数据处理时更有效率。