XlsxWriter:set_column() 对于多个不连续列使用一种格式

问题描述 投票:0回答:3

我想将 Pandas 数据框写入 Excel 并使用单行代码将一种格式应用于多个单独的列(例如 A 和 C,但不是 B):

writer = pd.ExcelWriter(filepath, engine='xlsxwriter')
my_format = writer.book.add_format({'num_format': '#'})

writer.sheets['Sheet1'].set_column('A:A,C:C', 15, my_format)

这会导致以下错误:

文件“.../python2.7/site-packages/xlsxwriter/worksheet.py”,第 114 行,column_wrapper

cell_1, cell_2 = [col + '1' for col in args[0].split(':')] ValueError:太多值无法解压

它不接受语法

'A:A,C:C'
。是否可以应用相同的格式而不为每列调用
set_column()

python-2.7 xlsxwriter
3个回答
16
投票

如果列范围不连续,您将必须为每个范围调用

set_column()

writer.sheets['Sheet1'].set_column('A:A', 15, my_format)
writer.sheets['Sheet1'].set_column('C:C', 15, my_format)

注意,要以编程方式执行此操作,您还可以使用数字范围:

for col in (0, 2):
    writer.sheets['Sheet1'].set_column(col, col, 15, my_format)

4
投票

或者您可以参考这样的专栏:

for col in ('X', 'Z'):
        writer.sheets['Sheet1'].set_column(col+':'+col, None, my_format)

0
投票

对于我来说

for col in (0, 2):
    writer.sheets['Sheet1'].set_column(col, col, 15, my_format)

没用。

我必须一起去

for col in range(0, 2):
    writer.sheets['Sheet1'].set_column(col, col, 15, my_format)
© www.soinside.com 2019 - 2024. All rights reserved.