使用openpyxl在Python中格式化复制Excel表格
最编程
2024-01-23 08:46:47
...
以下代码可实现excel带格式复制
import copy import openpyxl from openpyxl.utils import get_column_letter path = "数据.xlsx" save_path = "数据-复制.xlsx" wb = openpyxl.load_workbook(path) wb2 = openpyxl.Workbook() sheetnames = wb.sheetnames for sheetname in sheetnames: print(sheetname) sheet = wb[sheetname] sheet2 = wb2.create_sheet(sheetname) # tab颜色 sheet2.sheet_properties.tabColor = sheet.sheet_properties.tabColor # 开始处理合并单元格形式为“(<CellRange A1:A4>,),替换掉(<CellRange 和 >,)' 找到合并单元格 wm = list(sheet.merged_cells) if len(wm) > 0: for i in range(0, len(wm)): cell2 = str(wm[i]).replace('(<CellRange ', '').replace('>,)', '') sheet2.merge_cells(cell2) for i, row in enumerate(sheet.iter_rows()): sheet2.row_dimensions[i+1].height = sheet.row_dimensions[i+1].height for j, cell in enumerate(row): sheet2.column_dimensions[get_column_letter(j+1)].width = sheet.column_dimensions[get_column_letter(j+1)].width sheet2.cell(row=i + 1, column=j + 1, value=cell.value) # 设置单元格格式 source_cell = sheet.cell(i+1, j+1) target_cell = sheet2.cell(i+1, j+1) target_cell.fill = copy.copy(source_cell.fill) if source_cell.has_style: target_cell._style = copy.copy(source_cell._style) target_cell.font = copy.copy(source_cell.font) target_cell.border = copy.copy(source_cell.border) target_cell.fill = copy.copy(source_cell.fill) target_cell.number_format = copy.copy(source_cell.number_format) target_cell.protection = copy.copy(source_cell.protection) target_cell.alignment = copy.copy(source_cell.alignment) if 'Sheet' in wb2.sheetnames: del wb2['Sheet'] wb2.save(save_path) wb.close() wb2.close() print('Done.')
推荐阅读
-
问:如何使用 openpyxl 在 Excel 表中插入数组公式?
-
Python 使用 OpenPyXl 在 excel 表中设置单元格大小 openpyxl 修改 excel 单元格
-
解决使用 POI 库生成的 word 文件中的表格无法在 python-docx 中解析的问题。
-
使用openpyxl在Python中格式化复制Excel表格
-
Python中shutil.copy和shutil.copytree的使用方法 如何使用shutil.copy和shutil.copytree在Python中复制文件和目录
-
使用shutil库在Python中复制文件的功能实现
-
使用openpyxl在Excel表格中实现高位补0
-
使用Python的openpyxl库写入数据到Excel表格
-
使用Python计算年金现值及在Excel中求解年金现值公式