openpyxl имеет модуль ячейки со смещением свойства: https://openpyxl.readthedocs.io/en/stable/api/openpyxl.cell.cell.html
offset(row=0, column=0)[source]
Returns a cell location relative to this cell.
Parameters:
row (int) – number of rows to offset
column (int) – number of columns to offset
Return type:
openpyxl.cell.Cell
Я пытаюсь понять, как использовать cell.offset (задокументировано выше) для копирования данных из исходного листа, начиная со строки 2в столбце A к листу назначения, начинающемуся со строки 7 в столбце A.
На самом деле я могу добиться этого с помощью следующего подхода:
row_offset=5
for rows in ws2.iter_rows(min_row=2, max_row=None, min_col=1, max_col=1):
for cell in rows:
ws3.cell(row=cell.row + row_offset, column=1, value=cell.value)
wb3.save('C:\\folder\\destOutputOffsetby5.xlsx')
Приведенное выше копирует данные из ws2, начиная со строки2 до ws3, начиная со строки 7 (благодаря смещению 5).
Но я хочу использовать свойство 'offset' module 'cell' для своих собственных тренировок / обучения.
КакМогу ли я заменить вышеприведенный модуль смещения?
Вот что у меня есть:
for row in ws2.iter_rows(min_row=2, max_row=None, min_col=1, max_col=1):
for cell in row:
foo = cell.offset(row=5, column=0)
, если я тогда запустите:
"print(foo)"
Я получу правильныйсмещение стартовой строки плюс дополнительные строки (все здесь не показаны):
<Cell 'report1570826222449'.A7>
<Cell 'report1570826222449'.A8>
<Cell 'report1570826222449'.A9>
и т. д.
И если я запускаю
print(foo.value)
, я получаю данныеСамо собой разумеется:
2019-10-03 00:00:00
2019-10-02 00:00:00
и т. д.
Но я не могу понять, скопировать foo (или foo.value?) от ws2 до ws3. При каждом подходе, который я пробую, просто игнорируется cell.offset и записывается в столбец A рабочего листа назначения, начиная со строки 2, а не строки 7.
ws3:
wb3 = load_workbook('C:\\folder\\DetOutPutOffset5.xlsx')
ws3 = wb3['Sheet2']
Это не копирует данные какна самом деле ничего не изменилось в ws3.
for rows in ws2.iter_rows(min_row=2, max_row=None, min_col=1, max_col=1):
for cell in rows:
cell.offset(row=5, column=0)
wb3.save('C:\\folder\\Destfile.xlsx')
И это:
for rows in ws2.iter_rows(min_row=2, max_row=None, min_col=1, max_col=1):
for cell in rows:
ws3.cell.offset(row=5, column=0)
wb3.save('C:\\folder\\Destfile.xlsx')
выдает исключение
AttributeError: 'function' object has no attribute 'offset'
Есть предложения? Я чувствую, что мне просто не хватает какой-то базовой концепции, чтобы преодолеть разрыв между ws2 и ws3. Заранее спасибо!