Openpyxl - копирование диапазона ячеек (с формулой) из рабочей книги в другую - PullRequest
0 голосов
/ 03 апреля 2020

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

Скопировать выделенные строки из Рабочая книга 1 и добавить их в Рабочая тетрадь 2 ниже 'Март'

Пока мне удалось скопировать и вставить диапазон, но есть две проблемы:

1. Ячейки сдвинуты

2.Процент (формула) отсутствует, оставляя только цифры c.

См. Результат здесь

import openpyxl as xl

source = r"C:\Users\Desktop\Test_project_20200401.xlsx"
wbs = xl.load_workbook(source)
wbs_sheet = wbs["P2"] #selecting the sheet

destination = r"C:\Users\Desktop\Try999.xlsx"
wbd = xl.load_workbook(destination)
wbd_sheet = wbd["A3"] #select the sheet

row_data = 0

for row in wbs_sheet.iter_rows():
    for cell in row:
        if cell.value == "Yes":
            row_data += cell.row

for row in wbs_sheet.iter_rows(min_row=row_data, min_col = 1, max_col=250, max_row = row_data+1):
    wbd_sheet.append((cell.value for cell in row))            


wbd.save(destination)

У кого-нибудь есть идеи, как мне решить эту проблему? Любой отзыв / решение поможет!

Спасибо!

Ответы [ 2 ]

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

Просто хочу добавить свое собственное решение здесь.

Что я сделал, так это перебрал столбцы и применил "cell.number_format = '0%', который преобразует значение вашей ячейки в процент.

for col in ws.iter_cols(min_row=1, min_col=2, max_row=250, max_col=250):
    for cell in col:
        cell.number_format = '0%'

Более подробную информацию можно найти здесь: https://openpyxl.readthedocs.io/en/stable/_modules/openpyxl/styles/numbers.html

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

Я думаю, min_col должен = 0

Range ("A1"). Формула (в VBA) получает формулу. Диапазон («A1»). Значение (в VBA) получает значение.

Поэтому попробуйте использовать .formula в Python

(благодаря: Получить формулу из ячейка - VBA ... если это работает)

...