我想列出模板
xlsx
文件头中已存在于模板xlsx
文件中的数据附加,我们可以添加逻辑,如果Descrption
例如(Descrption 1
, Descrption 2
, Descrption 3
.... Descrption n
) 超过 4 个,我们可以创建另一个标题 Description next number
吗?对于下一次迭代,根据 Description
创建一列。
我尝试下面的代码:
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)
为了获得如预期输出 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”的列表列表的来源,因此其结构的原因尚不清楚,因此无法评论它如何更好地集成。
还要注意拼写。工作表和代码中有时会出现拼写错误的“描述”,这将导致数据与列不匹配。