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

2024-10-01 02:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试创建一个脚本来同时处理几个Excel工作表,我正在尝试让Python处理的步骤之一是使用从pandas数据帧传递的数据创建一个表。查看文档后,创建表似乎非常简单。你知道吗

遵循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来反转这些步骤,填充表,但去掉格式(字体颜色、字体类型、大小等)。这意味着我必须添加一个额外的步骤来修复格式(如果可能的话,我希望避免)。你知道吗


Tags: the数据selfaddtruewsa1table
1条回答
网友
1楼 · 发布于 2024-10-01 02:28:50

你的命令

# 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。你知道吗

相关问题 更多 >