@pro100ckat

Как сравнить два Excel файла через Python?

Есть два excel файла. Один шаблон, другой обычный. Первый файл и файл шаблона имеют статичную одинаковую структуру, с той лишь разницей, что значения ячеек могут отличаться. Нужно сверить значения шаблона со значениями в первом файле. Для работы я использую библиотеку openpyxl. Для меня сложность состоит в том, что нужно проверять заданный диапазон ячеек, хоть он заранее известен и не меняется. Таких диапазонов несколько. Если значение шаблона не совпадает со значением 1 файла, то следует заменить значение 1 файла значением из шаблона. На изображении таблица, которую надо сравнить с другой такой же по структуре таблицей. Цветом выделены ячейки которые надо сравнить.
5c9e868114af7851817137.jpeg
Итак, написал код, но не могу разобраться как заставить поочередно сравнивать диапозон ячеек из первой книги с диапозоном ячеек со второй. Запутался во вложенных циклах. Код очевидно работает неправильно. Сравнения происходят неправильно. Для начала возьмем маленький диапозон для примера. Дальше по аналогии доделаю код для остальных диапазонов.
import openpyxl
from openpyxl.cell import Cell
wb = openpyxl.load_workbook('./09.03.02_ТИИвБ_ИКБСП_2019.xlsx') #открыли исходный файл
sheet_wb = wb['График'] #выбрали лист 1 файла
shablon = openpyxl.load_workbook('C:/Users/user/Desktop/check.xlsx') #открыли шаблон
sheet_shablon = shablon['График'] #выбрали лист 2 файла
for i in sheet_wb['B13':'J13']: #Обращаемся к диапазону из 1 листа
    for cell1 in i: #Обращаемся к значениям из этого диапзона
        for j in sheet_shablon['B13':'J13']:
                for cell2 in j:
                    if cell1.value != cell2.value:
                        cell1.value == cell2.value
wb.save('test1.xlsx')

Пытался так, очевидно не правильно
sheet_wb = wb['График']
sheet_shablon = shablon['График']
for i in sheet_wb['B13':'E13']:
    for cell in i:
        if sheet_wb[cell].value != sheet_shablon[cell].value:
            sheet_wb[cell].value == sheet_shablon[cell].value

Подскажите как можно правильно реализовать. Спасибо заранее
  • Вопрос задан
  • 2476 просмотров
Решения вопроса 1
@pro100ckat Автор вопроса
Решение такое. Записываем данные шаблона в список. Сравниваем 1 файл со значениями из списка.
sheet_wb = wb['График']
sheet_shablon = shablon['График']
list = []
for i in sheet_shablon['B13':'BA39']:
    for cell in i:
        list.append(cell.value)
j=0
for i in sheet_wb['B13':'BA39']:
    for cell in i:
        if cell.value != list[j]:
            cell.value = list[j]
            j = j+1
        else:
            j = j+1
wb.save('test1.xlsx')
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы