Xlsxwriter - 在表格中使用变量到excel中

问题描述 投票:2回答:2

我正在使用pandas concat将几个数据框(表)合并到excel文档中,我使用Xlsxwriter进行excel输出。

我的问题是,在下面的代码中,我指定了excel中表格的范围,用 worksheet.add_table('A1:D26'). 这对这个例子文件来说是可行的。但在最终文件中,数据帧的数量取决于输入。所以有时从df1到df5,26行就够了。但也可以更少,可能是1或2个数据帧或更多。我可以用一个变量来代替D26吗?

例如,我可以用一个变量来代替D26吗?worksheet.add_table('A1:Dx')其中x由用户输入定义?

先谢谢你

import pandas as pd
import xlsxwriter

df1 = pd.DataFrame({'0':['X','1','2','3'],
                    '1':['1','☐','☐','☐'],
                    '2':['2','☐','☐','☐'],
                    '3':['3','☐','☐','☐'],
                    '4':['','','','']})

df2 = pd.DataFrame({'0':['X','1','2','3'],
                    '1':['1','☐','☐','☐'],
                    '2':['2','☐','☐','☐'],
                    '3':['3','☐','☐','☐'],
                    '4':['','','','']})

df3 = pd.DataFrame({'0':['X','1','2','3'],
                    '1':['1','☐','☐','☐'],
                    '2':['2','☐','☐','☐'],
                    '3':['3','☐','☐','☐'],
                    '4':['','','','']})

df4 = pd.DataFrame({'0':['X','1','2','3'],
                    '1':['1','☐','☐','☐'],
                    '2':['2','☐','☐','☐'],
                    '3':['3','☐','☐','☐'],
                    '4':['','','','']})

df5 = pd.DataFrame({'0':['X','1','2','3'],
                    '1':['1','☐','☐','☐'],
                    '2':['2','☐','☐','☐'],
                    '3':['3','☐','☐','☐'],
                    '4':['','','','']})

result = pd.concat([df1, df2, df3, df4, df5], axis=1)

workbook = xlsxwriter.Workbook('example.xlsx')
worksheet = workbook.add_worksheet('output')
worksheet.add_table('A1:D26', {'data': result.values.T.tolist(),'style': 'None', 'header_row': False})

workbook.close()
python excel pandas concat xlsxwriter
2个回答
1
投票

你可以尝试使用格式字符串。 在这里,我定义了x1和x2,然后将它们插入到你的单元格范围字符串中,并使用 %d 来指定整数格式。 字符串后面跟的是 % (<arg1>,<arg2>).

x1 = 2
x2 = 27
worksheet.add_table('A%d:D%d'%(x1,x2), {'data': result.values.T.tolist(),'style': 'None', 'header_row': False})

0
投票

例如 worksheet.add_table('A1:Dx'),其中x由用户输入定义?

几乎在所有情况下,XlsxWriter方法都支持两种形式的符号来指定单元格的位置。行-列符号和A1符号。

在这种情况下,XlsxWriter方法支持两种形式的符号来指定单元格的位置:行-列符号和A1符号。add_table() 同时支持行-列和A1风格的符号。以下是等价的。

worksheet.add_table(2, 1, 6, 5, { ... })
worksheet.add_table('B3:F7',    { ... })

所以对于你的情况,你可以使用:

worksheet.add_table(0, 0, row_num, 4, { ... })  # A1:Dx

在这里... row_num 是一个基于你的数据帧长度或其他输入变量的零索引数。

© www.soinside.com 2019 - 2024. All rights reserved.