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’]]

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

from openpyxl.utils import get_column_letter

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

有点骇人听闻,但您的报告将更具可读性。

以上是 openpyxl-调整列宽大小 的全部内容, 来源链接: utcz.com/qa/408451.html

回到顶部