Для пример 1-й файл с некоторыми данными:
введите здесь описание изображения
2-й файл:
введите здесь описание изображения
Следующие файлы имеют все значения данных в разных ячейках, но все еще в том же диапазоне: AF23:AQ1500.
Мне нужно объединить все данные из всех файлов из одной папки на рабочем столе в главный файл ALL.xlsm с таким же формат, то же имя листа в тех же ячейках позиции, что и во всех файлах.
Я не хочу использовать VBA или запрос Power в Excel, а только Python (xlwings, pandas?) . Я совсем новичок в программировании, но все еще пытаюсь что-то сделать быстрее и эффективнее
Что я пытаюсь?
Код: Выделить всё
import pandas as pd
import openpyxl
# Cesty k souborům
file1 = r'C:\Users\hruby\Desktop\XLSM_merge\CEN_Hrdlicka.xlsm'
file2 = r'C:\Users\hruby\Desktop\XLSM_merge\CEN_Hruby.xlsm'
output_file = r'C:\Users\hruby\Desktop\XLSM_merge\ALL_V2.xlsm'
# Načítání dat z požadovaného rozsahu v obou souborech
df1 = pd.read_excel(file1, usecols="AF:AQ", skiprows=22, nrows=1478) # Rozsah AF23:AQ1500
df2 = pd.read_excel(file2, usecols="AF:AQ", skiprows=22, nrows=1478) # Rozsah AF23:AQ1500
# Otevření souboru pro zachování maker a připravený na zápis změn
wb = openpyxl.load_workbook(file1, keep_vba=True)
# Vybereme aktivní list nebo specifikovaný list (např. 'List1')
sheet = wb.active
# Procházení hodnot z obou souborů a zapisování na konkrétní buňky do cílového souboru
# Nejprve zapíšeme data z CEN_Hrdlicka (df1)
for i, row in enumerate(df1.values, start=23): # Začínáme od řádku 23
for j, value in enumerate(row, start=32): # Sloupec AF je 32. sloupec v Excelu
sheet.cell(row=i, column=j, value=value)
# Nyní zapíšeme data z CEN_Hruby (df2) do stejných pozic v souboru ALL_V2
for i, row in enumerate(df2.values):
# Explicitně nastavíme řádek na správný index v Excelu
row_index = i + 23 # Začínáme od řádku 23 v Excelu
for j, value in enumerate(row, start=32): # Sloupec AF je 32. sloupec v Excelu
if value is not None: # Pokud není hodnota None (prázdná), zapíšeme ji
sheet.cell(row=row_index, column=j, value=value)
# Uložení změn do cílového souboru
wb.save(output_file)
# Uložení souboru ALL_V2 s uloženými změnami
print(f"Změny byly úspěšně uloženy do souboru '{output_file}'.")
Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Мобильная версия