Мое решение, представленное здесь, представляет собой адаптацию из этого сообщения , которое я неоднократно упоминал в своих комментариях по вашему вопросу, и с использованием документации openpyxl
Вот как выглядит мой входной xlsx:
Вот код:
import openpyxl
# file 1:
wb_1 = openpyxl.load_workbook(in_path, read_only=True)
ws_1 = wb_1[wb_1.sheetnames[0]]
# file 2 (it's a new file):
wb_2 = openpyxl.Workbook()
ws_2 = wb_2.active
for r in ws_1.rows:
for c in r:
ws_2.cell(row=c.row, column=c.column).value = c.value
ws_2.cell(row=c.row, column=c.column).fill = c.fill
ws_2.cell(row=c.row, column=c.column).font = c.font
ws_2.cell(row=c.row, column=c.column).number_format = c.number_format
ws_2.cell(row=c.row, column=c.column).border = c.border
wb_2.save(out_path)
Вот мой результат документ:
По сути, мой внутренний l oop является дубликатом кода здесь:
new_cell.font = copy(cell.font)
new_cell.border = copy(cell.border)
new_cell.fill = copy(cell.fill)
new_cell.number_format = copy(cell.number_format)
new_cell.protection = copy(cell.protection)
new_cell.alignment = copy(cell.alignment)
Итак, частичная заслуга принадлежит @CharlieClark за его сообщение (ссылка здесь снова)
Если вы хотите, чтобы люди отвечали на ваши вопросы по SO, по крайней мере, попытайтесь использовать информацию, которую они предоставьте в комментариях. Особенно, если вы новичок в python или конкретном пакете. Это не служба программирования, вам следует хотя бы попытаться найти решение, прежде чем утверждать, что ваш пост не является дубликатом или на вопрос еще не был дан ответ.