我正在尝试创建一个脚本来一次处理多个Excel工作表,而我试图让Python处理的步骤之一就是使用从熊猫数据框传递来的数据创建表。查看文档看起来很简单。
以下来自here的示例:
# define a table style
mediumstyle = TableStyleInfo(name='TableStyleMedium2', showRowStripes=True)
# create a table
table = Table(displayName='IdlingReport', ref='A1:C35', tableStyleInfo=mediumstyle)
# add the table to the worksheet
sheet2.add_table(table)
# Saving the report
wb.save(openexcel.filename)
print('Report Saved')
但是,这将创建一个空表,而不是使用单元格“ A1:C35”中的数据。除了这些步骤之外,我似乎找不到任何示例,因此,对我可能做错的任何帮助都将不胜感激。
“ A1:C35”中的数据正在按以下方式写入Excel:
while i < len(self.sheets):
with pd.ExcelWriter(filename, engine='openpyxl') as writer:
writer.book = excelbook
writer.sheets = dict((ws.title, ws) for ws in excelbook.worksheets)
self.df_7.to_excel(writer, self.sheets[i], index=False, header=True, startcol=0, startrow=0)
writer.save()
i += 1
输出看起来像这样
Time Location Duration
1/01/2019 [-120085722,-254580042] 5 Min
1/02/2019 [-120085722,-254580042] 15 Min
1/02/2019 [-120085722,-254580042] 7 Min
现在只需澄清一下,我首先将数据框架写入Excel,然后在格式化数据后将其格式化为表格。通过先创建表然后写入Excel来逆转这些步骤,从而填充了表,但摆脱了格式设置(字体颜色,字体类型,大小等)。这意味着我必须添加一个额外的步骤来修复格式设置(如果可能,我希望避免这种情况)。
答案 0 :(得分:1)
您的命令
# create a table
table = Table(displayName='IdlingReport', ref='A1:C35', tableStyleInfo=mediumstyle)
创建一个 Excel特殊对象 –一个名为IdlingReport
的空表。
您可能还需要其他内容-用熊猫数据框中的数据填充 Excel工作簿。
为此目的,有一个功能dataframe_to_rows()
:
from openpyxl import Workbook
from openpyxl.utils.dataframe import dataframe_to_rows
wb = Workbook()
ws = wb.active # to rename this sheet: ws.title = "some_name"
# to create a new sheet: ws = wb.create_sheet("some_name")
for row in dataframe_to_rows(df, index=True, header=True):
ws.append(row) # appends this row after a previous one
wb.save("something.xlsx")