Openpyxl - добавление данных из книги Excel в другую - PullRequest
1 голос
/ 08 апреля 2020

Я хотел бы получить указанную строку c из Рабочей книги 1 и добавить ее после существующих данных в Рабочей книге 2.

Код, который я пробовал до сих пор, можно найти ниже:

import openpyxl as xl
from openpyxl.utils import range_boundaries
min_cols, min_rows, max_cols, max_rows = range_boundaries('A:GH')

#Take source file
source = r"C:\Users\Desktop\Python project\Workbook1.xlsx"
wb1 = xl.load_workbook(source)
ws1 = wb1["P2"] #get the needed sheet


#Take destination file
destination = r"C:\Users\Desktop\Python project\Workbook2.xlsx"
wb2 = xl.load_workbook(destination)
ws2 = wb2["A3"] #get the needed sheet


row_data = 0

#Get row & col position and store it in row_data & col_data
for row in ws1.iter_rows():
    for cell in row:
        if cell.value == "Positive":
            row_data += cell.row


for row in ws1.iter_rows(min_row=row_data, min_col = 1, max_col=250, max_row = row_data):
    ws2.append((cell.value for cell in row[min_cols:max_cols]))  


wb2.save(destination)
wb2.close()

Но когда я использую вышеупомянутый код, я получаю результат, но со сдвигом в 1 строку. Я хочу, чтобы данные, добавленные в строку 8, находились в строке 7 сразу после последних данных в Рабочей книге 2. (См. Изображение ниже)

Рабочая книга 2

Кто-нибудь получил какие-либо отзывы? Спасибо!

1 Ответ

0 голосов
/ 14 апреля 2020

Я нашел решение и опубликую его здесь на случай, если у кого-то возникнет такая же проблема. Хотя ячейки внизу выглядели пустыми, у них было странное форматирование. Вот почему сценарий Python рассматривал ячейки как непустые и добавлял / сдвигал данные в другом месте (месте, где не было форматирования).

Решением было бы форматирование каждой строки под вашими данными как пустые клетки. (Просто скопируйте ряд пустых ячеек из новой рабочей книги и вставьте их под свои данные)

Надеюсь, это поможет! ;)

...