Дублировать книгу со списком номеров счетов

У меня есть два листа Excel,

  1. Формат.xlsx (с 2 вкладками)

Вкладка 1 - Приложение-резюме

Вкладка 2 — Приложение А

  1. Список счетов - Наличие уникального списка счетов

Я хочу продублировать «Format.xlsx» (т.е. скопировать и вставить) несколько раз в списке счетов-фактур и преуспеть, чтобы он был назван в соответствии с соответствующим номером счета-фактуры.

например, у меня есть два счета-фактуры с номерами 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, а размещенная формула полностью стерта.

Намерение состоит в том, чтобы скопировать и вставить формат 140 раз (для соответствующих номеров счетов), имея соответствующую формулу на вкладке 1, позже при размещении новых данных на вкладке 2, вкладка 1 будет автоматически обновлена.

Помощь будет высоко оценена!

Ссылка на образцы данных -

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
32
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я думаю, что приведенный ниже пример кода будет делать то, что вы хотите.

Обратите внимание, что он использует 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

Другие вопросы по теме