如何使用Openpyxl的表格模块创建表格?

时间:2019-10-24 00:18:59

标签: python pandas openpyxl

我正在尝试创建一个脚本来一次处理多个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来逆转这些步骤,从而填充了表,但摆脱了格式设置(字体颜色,字体类型,大小等)。这意味着我必须添加一个额外的步骤来修复格式设置(如果可能,我希望避免这种情况)。

1 个答案:

答案 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")

请参见Working with Pandas DataframesTutorial