Openpyxlでスタイルをコピーしたい
import openpyxl
from copy import copy
# Stylyのコピー設定
# コピー元のExcelファイルを開く
wb = openpyxl.load_workbook('sample.xlsx')
# コピー先のExcelファイルを開く
dst_wb = openpyxl.load_workbook('sample2.xlsx')
dst_sheet = dst_wb.active
sheet = wb.active
for row in sheet:
for cell in row:
# コピー先のセルにコピー元のセルのスタイルをコピー
new_cell = dst_sheet.cell(row=cell.row, column=cell.column, value=cell.value)
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.alignment = copy(cell.alignment)
for column_width in range(1, sheet.max_column+1):
dst_sheet.column_dimensions[openpyxl.utils.get_column_letter(column_width)].width = sheet.column_dimensions[openpyxl.utils.get_column_letter(column_width)].width
for row_height in range(1, sheet.max_row+1):
dst_sheet.row_dimensions[row_height].height = sheet.row_dimensions[row_height].height
# グループ化されている設定のコピー
# 列
if cell.column in sheet.column_dimensions:
dst_sheet.column_dimensions[cell.column].outlineLevel = sheet.column_dimensions[cell.column].outlineLevel
dst_sheet.column_dimensions[cell.column].hidden = sheet.column_dimensions[cell.column].hidden
dst_sheet.column_dimensions[cell.column].collapsed = sheet.column_dimensions[cell.column].collapsed
# 行
if cell.row in sheet.row_dimensions:
dst_sheet.row_dimensions[cell.row].outlineLevel = sheet.row_dimensions[cell.row].outlineLevel
dst_sheet.row_dimensions[cell.row].hidden = sheet.row_dimensions[cell.row].hidden
dst_sheet.row_dimensions[cell.row].collapsed = sheet.row_dimensions[cell.row].collapsed
# 結合されているセルの設定のコピー
for merged_cell in sheet.merged_cells.ranges:
dst_sheet.merge_cells(range_strings=merged_cell.coord)
グループ化もコピーできるのは驚いた。
さらに折りたたまれているかそうでないかも把握できたとは
セル結合もmerged_cells.rangesで結合されているセルの情報が一気に取れて便利。
この記事が気に入ったらサポートをしてみませんか?