复制带有发票编号列表的工作簿



我有一张两张excel表,

  1. Format.xlsx(有2个选项卡(

表1-总结附录

表2-附录A

  1. 发票列表-具有唯一的发票列表

我想复制";格式.xlsx"(即复制和粘贴(发票列表中的次数,并根据相关发票编号命名excel。

例如,我有两张编号为123和456的发票,我希望将格式复制粘贴两次,粘贴到excel表格中,名称已更改为123和456。

此外,在不更改excel模板格式的情况下。

我尝试了以下代码

invoice_num_list = pd.read_csv('Invoice List.csv') #List of invoices
print(invoice_num_list.shape)
# Output (140, 1)
Format = pd.read_excel('Format.xlsx') #Template having 2 tabs
for invoice_num in invoice_num_list:
Format.to_excel(f'{invoice_num}.xlsx')

但是,上面的代码并没有复制纸张140次,而是只复制了一次。

此外,excel模板的格式也发生了变化,放置的公式也被完全删除。

其目的是复制粘贴表1中具有相关公式的格式140次(针对各个发票编号(,稍后在表2中放置新数据时,表1将自动更新。

非常感谢您的帮助!

链接到样本数据-

https://drive.google.com/drive/folders/1inrofeT6v9P0ISEcmbswvpxMMCq5TaV0?usp=sharing

我认为下面的示例代码可以满足您的需要。

请注意,它使用openpyxl.load_workbook()而不是pd.read_excel(),这允许保留现有工作簿中的所有选项卡、公式和格式。

还要注意,代码中的for循环需要稍作调整,才能正确地遍历其他文件中的发票。

import pandas as pd
import openpyxl
invoice_num_list = pd.read_csv('Invoice List.csv') #List of invoices
print(invoice_num_list.shape)
# Here we use only the first 5 invoices, as a test
invoice_num_list = invoice_num_list[invoice_num_list.index < 5]
print(invoice_num_list)
Format = openpyxl.load_workbook('Format.xlsx') #Template having 2 tabs
for invoice_num_index, invoice_num in invoice_num_list.itertuples():
print(f"{invoice_num}")
Format.save(f'{invoice_num}.xlsx')

输出:

(140, 1)
Invoice number
0  KA-AVSR-Feb22-1
1  KA-AVSR-Feb22-2
2  KA-AVSR-Feb22-3
3  KA-AVSR-Feb22-4
4  KA-AVSR-Feb22-5
KA-AVSR-Feb22-1
KA-AVSR-Feb22-2
KA-AVSR-Feb22-3
KA-AVSR-Feb22-4
KA-AVSR-Feb22-5