如何将列表数据附加到“xlsx”模板?

问题描述 投票:0回答:1

我想列出模板

xlsx
文件头中已存在于模板
xlsx
文件中的数据附加,我们可以添加逻辑,如果
Descrption
例如(
Descrption 1
,
Descrption 2
,
Descrption 3
....
Descrption n
) 超过 4 个,我们可以创建另一个标题
Description next number
吗?对于下一次迭代,根据
Description
创建一列。

模板输入示例:-

预期输出 XLSX 文件:-

如果我运行下面的脚本然后得到输出:-

我尝试下面的代码:

import pandas as pd

xlsx_file = "input.xlsx"

existing_data = pd.read_excel(xlsx_file)

newData = pd.DataFrame([
    ['Brand A'],
    ['Product Title'],
    ['Description 1', 'Description 2', 'Description 3', 'Descriprion 4'],
    ['Quantity 4']
])

combined_data = pd.concat([existing_data, newData], ignore_index=False)



with pd.ExcelWriter(xlsx_file, engine='openpyxl', mode='a', if_sheet_exists='overlay') as write:
    combined_data.to_excel(write, startcol=0, startrow=0)
python pandas openpyxl
1个回答
0
投票

为了获得如预期输出 XLSX 文件:-屏幕截图中所示的数据,您需要在基本级别将代码更改为以下内容;

注意:-“newData”数据框已修改,因此它包含与模板匹配的标题,因此 concat 可以将数据合并到现有列中。

import pandas as pd

xlsx_file = "input.xlsx"


existing_data = pd.read_excel(xlsx_file)

# newData = pd.DataFrame([
#     ['Brand A'],
#     ['Product Title'],
#     ['Description 1', 'Description 2', 'Description 3', 'Descriprion 4'],
#     ['Quantity 4']
# ])

### Dictionary of lists 
newData = pd.DataFrame({
    "Brand": ['Brand A'],
    "Product Title": ['Product Title'],
    "Description 1": ['Description 1'],
    "Description 2": ['Description 2'],
    "Description 3": ['Description 3'],
    "Description 4": ['Description 4'],
    "Quantity": ['Quantity 4']
})

combined_data = pd.concat([existing_data, newData], ignore_index=False)


with pd.ExcelWriter(xlsx_file, engine='openpyxl', mode='a', if_sheet_exists='overlay') as write:
    combined_data.to_excel(write, startcol=0, startrow=0, index=False)  # index set to False

您尝试或想要对描述字段执行的操作尚不清楚。
问题的第一段令人困惑。看来您可能正在指示具有更多/更少描述字段的场景,并且如果模板中存在超过 4 个列,则可能需要添加更多列。但不能确定。
此外,未指定创建“newData”的列表列表的来源,因此其结构的原因尚不清楚,因此无法评论它如何更好地集成。
还要注意拼写。工作表和代码中有时会出现拼写错误的“描述”,这将导致数据与列不匹配。

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