全职键盘侠 发表于 2024-10-23 07:26:01

python合并两个Excel文件的脚本

合并两个Excel文档:第一个文档如下:https://pic.imgdb.cn/item/6715be5fd29ded1a8c567034.png第二个文档如下:https://pic.imgdb.cn/item/6715be5fd29ded1a8c56707e.png想要合并成下面图片的样子:https://pic.imgdb.cn/item/6715be5fd29ded1a8c5670b6.png学习一段时间了,写了个python合并两个Excel文件的脚本,希望能帮助到像我一样的小白,代码简单,大佬勿喷。不足之处请您不吝赐教:下面代码实现:
<ol>&quot;&quot;&quot;
Date:2024/10/21 15:46
File : MergeExcel.py
&quot;&quot;&quot;
from copy import copy
from openpyxl import load_workbook


class MergeExcel:
    def __init__(self):
      e1 = &quot;fileDirectory/excel1.xlsx&quot;
      e2 = &quot;fileDirectory/excel2.xlsx&quot;
      self.wb1 = load_workbook(e1)
      self.wb2 = load_workbook(e2)
      self.sheet1 = self.wb1.active
      self.sheet2 = self.wb2.active
      self.insert_row = 99             # 这里设置从哪行插入第一张表的数据 或者 self.sheet2.max_row + 1

    @staticmethod
    def copy_style(source_cell, target_cell):
      if source_cell.has_style:
            target_cell.font = copy(source_cell.font)
            target_cell.fill = copy(source_cell.fill)
            target_cell.border = copy(source_cell.border)
            target_cell.alignment = copy(source_cell.alignment)
            target_cell.number_format = source_cell.number_format
            target_cell.protection = copy(source_cell.protection)
            # 使用openpyxl库的cell.comment属性获取单元格的注释。
            if source_cell.comment:
                target_cell.comment = source_cell.comment# 有批注的复制批注

    def apply_merge_cell(self, merged_ranges):
      for min_row, min_col, max_row, max_col in merged_ranges:
            self.sheet2.merge_cells(start_row=min_row, start_column=min_col,
                                    end_row=max_row, end_column=max_col)

    def copy_value_style(self, source_start_row, source_end_row, source_start_col, source_end_col, target_start_row,
                         target_start_col):
      for row in range(source_start_row, source_end_row + 1):
            for col in range(source_start_col, source_end_col + 1):
                source_cell = self.sheet1.cell(row=row, column=col)
                target_cell = self.sheet2.cell(row=row + target_start_row - source_start_row,
                                             column=col + target_start_col - source_start_col)
                self.sheet2.cell(row=row + target_start_row - source_start_row,
                                 column=col + target_start_col - source_start_col).value = source_cell.value

                self.copy_style(source_cell, target_cell)

    def copy_stats(self, source_start_row, source_end_row, source_start_col, source_end_col, target_start_row,
                   target_start_col):
      merged_ranges = []
      for merge_range in self.sheet1.merged_cells.ranges:
            min_col, min_row, max_col, max_row = merge_range.bounds
            print(min_row, min_col, max_row, max_col)
            print(source_start_row, source_start_col,source_end_row, source_end_col)
            if (min_row >= source_start_row and max_row = source_start_col and max_col

拉黑是狗 发表于 2024-10-23 07:53:20

这个代码量、、、、、、、、、、、、、、

笑傲五道口 发表于 2024-10-23 18:41:05

真是好资料

随想 发表于 2024-10-30 22:04:34

努力学习努力学习努力学习

Isa 发表于 2024-11-6 09:21:06

好资源收下了

我12318 发表于 5 天前

这么多好资源
页: [1]
查看完整版本: python合并两个Excel文件的脚本