【问题标题】:Write to multiple rows in excel sheet using pandas xlsxwriter使用 pandas xlsxwriter 写入 excel 表中的多行
【发布时间】:2020-08-02 11:12:11
【问题描述】:

我正在尝试使用 xlsxwriter 将值写入 excel 工作表。

当尝试将数据写入第二行时,数据会覆盖到第一行本身。由于我是 xlsx 作家的新手,我无法弄清楚在哪里迭代。

import pandas as pd
from pandas import ExcelWriter


def outputInExcel(valueToExcel):
    with ExcelWriter('pandas.xlsx', mode='A', engine='xlsxwriter') as writer:
        # write operation perform
        valueToExcel.to_excel(writer,startrow=1, header=False)
        worksheet = writer.sheets['Sheet1']
        workbook = writer.book
        header_format = workbook.add_format({
            'bold': True,
            'text_wrap': True,
            'valign': 'top',
            'fg_color': '#D7E4BB',
            'border': 1})

        for row_num,col_num,value in enumerate(valueToExcel.columns.values):
            worksheet.write(0, col_num + 1, value, header_format)
        writer.save()


file = "Search.xlsx"#image  reference
df = pd.read_excel(file)
for index, row in df.iterrows():
    valueToExcel = pd.DataFrame({
        'Manager': [row['Manager']], 'Policy Name': [row['Policy Name']], 'Numbers': [row['Numbers'], 'Source IP': [row['Source']], 'Destination IP': [row['Destination']]
    })
    outputInExcel(valueToExcel)

我期待这样的输出。

我得到这样的输出。

【问题讨论】:

  • 您可能需要行变量并为每个新行添加 1,就像您对 col_num 所做的那样。

标签: python python-3.x pandas list xlsxwriter


【解决方案1】:

您的代码存在一些问题;您每次都覆盖同一行,然后每行都重新启动编写器,因此效率不高。我的建议是一次性编写整个数据框:

writer = ExcelWriter('pandas.xlsx', mode='A', engine='xlsxwriter')
worksheet = writer.sheets['Sheet1']
workbook = writer.book
header_format = workbook.add_format({
  'bold': True,
  'text_wrap': True,
  'valign': 'top',
  'fg_color': '#D7E4BB',
  'border': 1
})
# write the header separately so you can format it
for col_num, value in enumerate(['Manager', 'Policy Name', 'Numbers', 'Source IP', 'Destination IP']):
  worksheet.write(0, col_num + 1, value, header_format)

df = pd.read_excel(file)
# if you only want specific columns
df = df[['Manager', 'Policy Name', 'Numbers', 'Source', 'Destination']]
df.to_excel(writer, sheet_name=name, index=False, header=False, startrow=1)
writer.save()

我尽量保持它与您的代码相同,我只是删除了循环并将代码移出函数

【讨论】:

  • 你能告诉我我所举的例子吗,因为我正在向 excel 添加额外的值,所以我尝试添加新的标题,我会说 keyerror 不在索引中@Ruben Helsloot
  • 我不明白你的意思。我在您的代码中没有看到示例
猜你喜欢
  • 2017-03-30
  • 2014-09-14
  • 2016-03-28
  • 2019-08-04
  • 1970-01-01
  • 1970-01-01
  • 2015-02-21
  • 2021-04-16
  • 2021-07-31
相关资源
最近更新 更多