Слияние данных не копирует все данные в PythonPython

Программы на Python
Ответить
Anonymous
 Слияние данных не копирует все данные в Python

Сообщение Anonymous »

Мне нужно объединить данные из большего количества файлов .xlsm (около 20) со значениями в ячейках в одном диапазоне (AF23:AQ1500), но со значениями данных в разных ячейках.
Для пример 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}'.")
Что я получу? Не все значения из 1-го файла копируются. Значения из второго файла в порядке.

Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»