评论
:
date_format = workbook.add_format({'num_format': 'dd/mm/yy'})
,将日期列显示为Unix编号,而不是正确的日期。
所示样本值为:
42668
而不是显示
"24-10-16"
.
评论
:…我可以使用基于列名的适当格式(即计数、销售日期)
你可以使用
worksheet.set_column()
为整个列设置样式。
文档:
XlsxWriter worksheet.set_column()
先决条件
:列名称/样式的顺序必须在
同步
和你的桌子。
例如。
count == 'A'
,
sale_date == 'B'
等等……
from collections import OrderedDict
_styles = OrderedDict([('count',number_format), ('sale_date', date_format), ('total', number_format), ('text', string_format)])
for col, key in enumerate(_styles):
A1_notation = '{c}:{c}'.format(c=chr(col + 65))
worksheet.set_column(A1_notation, None, _styles[key])
print("worksheet.set_column('{}', None, {})".format(A1_notation, _styles[key]))
产量
:
worksheet.set_column('A:A', None, number_format)
worksheet.set_column('B:B', None, date_format)
worksheet.set_column('C:C', None, number_format)
worksheet.set_column('D:D', None, string_format)
对于后续写入,您不需要分配
style
,例如使用
worksheet.write('A1', 123)
将默认为
A:A number_format
问题
:我可以根据列名称使其动态化吗?
你没有用
“列名”
它叫
单元格A1符号
.
设置映射
dict
例如:
style_map = {'A': number_format, 'B':date_format}
用法
:
注意
:这只适用于
单一的
信件,发件人
A
到
Z
def write(A1_notation, value):
worksheet1.write(A1_notation, value, style_map[A1_notation[0]])
行-列表示法
(0, 0)
:
style_map = {'0': number_format, '1':date_format}
用法
:
def write(row, col, value):
worksheet1.write(row, col, value, style_map[col])
from xlsxwriter.utility import xl_rowcol_to_cell
def write(A1_notation, value):
worksheet1.write(A1_notation, value, style_map[xl_cell_to_rowcol(A1_notation)[1]])