python – openpyxl – 调整列宽大小

我有以下脚本将CSV文件转换为XLSX文件,但我的列大小非常窄.每次我用鼠标拖动它们来读取数据.有人知道如何在openpyxl中设置列宽吗?

这是我正在使用的代码.

#!/usr/bin/python2.6
import csv
from openpyxl import Workbook
from openpyxl.cell import get_column_letter

f = open('users_info_cvs.txt', "rU")

csv.register_dialect('colons', delimiter=':')

reader = csv.reader(f, dialect='colons')

wb = Workbook()
dest_filename = r"account_info.xlsx"

ws = wb.worksheets[0]
ws.title = "Users Account Information"

for row_index, row in enumerate(reader):
    for column_index, cell in enumerate(row):
        column_letter = get_column_letter((column_index + 1))
        ws.cell('%s%s'%(column_letter, (row_index + 1))).value = cell

wb.save(filename = dest_filename)

解决方法:

您可以估计(或使用单宽度字体)来实现此目的.我们假设数据是一个嵌套数组,如[[‘a1′,’a2’],[‘b1′,’b2’]]

我们可以获得每列中的最大字符数.然后将宽度设置为.宽度恰好是等宽字体的宽度(如果不至少更改其他样式).即使你使用可变宽度字体,这也是一个不错的估计.这不适用于公式.

column_widths = []
for row in data:
    for i, cell in enumerate(row):
        if len(column_widths) > i:
            if len(cell) > column_widths[i]:
                column_widths[i] = len(cell)
        else:
            column_widths += [len(cell)]

for i, column_width in enumerate(column_widths):
    worksheet.column_dimensions[get_column_letter(i+1)].width = column_width

有点黑客但你的报告会更具可读性.

上一篇:Python安装openpyxl


下一篇:openpyxl模块(excel处理)