参考https://blog.csdn.net/weixin_45081575/article/details/124144987

实现了把多个 excel 文件合并成一个 excel,保存格式

import os
import copy
import openpyxl
from openpyxl.utils import get_column_letter as gcl

# 指定输入、输出文件路径

class SplitMultiSheet:

def get_all_sheet(self, files):
        new_wb = openpyxl.Workbook()
        for file in files:
            wb = openpyxl.load_workbook(filename=file)
            for sn in wb.sheetnames:
                sheet = wb[sn]
                sheet2 = new_wb.create_sheet(sn)
                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[gcl(j + 1)].width = sheet.column_dimensions[gcl(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)
        # 第一个 Sheet 默认为 Sheet,可以选择删除
        if 'Sheet' in new_wb.sheetnames:
            del new_wb['Sheet']
        new_wb.save(f"res.xlsx")
        new_wb.close()

def main(self):
        files = []
        for file in os.listdir("."):
            if file.endswith(".xlsx") and os.path.basename(file) != "res.xlsx":
                files.append(file)

self.get_all_sheet(files)

if __name__ == '__main__':
    sms = SplitMultiSheet()
    sms.main()
    print('Done.')

openpyxl 复制带格式的Excel 表格,并且合并相关推荐

  1. EXCEL表格数据合并

    EXCEL表格数据合并 主要针对同一个excel文件中包含多个sheet,需要将所有的数据进行汇总. 1.表格数据展示: 2.数据合并步骤: 打开excel表格(当前表格或者新建表格均可),选择数据- ...

  2. html合并的列内容不居中显示,表格不能合并居中 excel表格不能合并单元格怎么办...

    Excel 单元格不能合并了,合并单元格选项是灰色的无法合并单元格,主要是因为几个单元格之间套用了格式,所以无法合并单元格. 具体的解决方法如下: 选中相应的单元格,然后,点击工具栏上"设计 ...

  3. php 导出csv设置列宽度,php数据库导出excel表格数据-php从数据库导出csv格式的Excel表格是,字段本身就......

    PHP如何将查询出来的数据导出成excel表格(最好做... $objPHPExcel->getActiveSheet()->getDefaultColumnDimension(A)-&g ...

  4. excel表格内容合并的技巧?

    今天跟大家分享一下excel表格内容合并的技巧? 1.打开演示文件,如下图要求将多个表格合并到一起. 2.首先我们点击下图选项 3.点击[汇总拆分]-[合并多表] 4.勾选要合并的工作表 5.然后根据 ...

  5. 如何通过VB合并Excel单元格以及设置Excel行高?VB创建Excel表格,合并单元格,生成图形等操作

    如何通过VB合并Excel单元格以及设置Excel行高? 例如:我想把第一列的第4,5,6,7行合并...我在怎样让合并单元格里的字居中,怎样改变字体. 请不吝赐教... ============== ...

  6. 各类Excel表格批量合并问题的实现思路与案例

    作者:小小明 在日常工作中,可能会遇到各类表格合并的需求.这类需求只要搞懂核心原理都很简单,本质都是万变不离其宗,相信大部分读者都能解决大部分需求. 基本思路: 遍历需要被合并的文件 读取数据,并合并 ...

  7. python示例--下载mysql数据库中数据--excel表格,合并表格

    用到的知识点 1.mysql连接 2.pandas的concat数据合并 3.路径等 import threading import requests import json import pymys ...

  8. 使用计算机制作数字文本格式,电脑excel表格如何将文本格式变成数字格式

    电脑excel表格如何将文本格式变成数字格式 文本格式和数字格式的单元格显示是有部分不一样的,今天小编就告诉大家电脑excel表格如何将文本格式变成数字格式. 具体如下: 1.首先我们打开电脑中的Ex ...

  9. Python:Excel自动录入、Excel表格快速合并(附有源代码)

    文章目录 Jacob_E办公程序 Jacob_E功能一:Excel数据自动录入 感受 源代码 Jacob_E办公程序 通过一个月的Python语法基础课学习,小编也终于写出了自己的第一个程序!完成程序 ...

最新文章

  1. Android --- 从相册中选择图片或者拍着选择图片遇到的问题
  2. mysql怎么查看索引情况_mysql 查看索引使用情况
  3. adb shell命令_[Android]adb的使用
  4. java接口vm和dto的区别_第十八节:详解Java抽象类和接口的区别
  5. java for 死循环_一个Java For语句死循环的例子源码
  6. 算法:凸多边形最优三角剖分
  7. 已知直线方程,计算直线对应的向量
  8. Linux下ppp拨号+电信3G模块
  9. linux终端如何分栏,动态分栏布局实现
  10. 计算机开机按f1,开机要按F1怎么解决?电脑开机不按F1进去系统的方法
  11. 初三毕业班主任压力过大割喉自尽
  12. IntelliJ IDEA 文件未被识别成maven工程
  13. 5-3 凸多边形面积
  14. 森宇文化全授权代理《彩虹护卫队》亮相戛纳开启动漫全产业链布局
  15. 塔望食业洞察|预制菜行业市场现状、发展趋势及未来思考
  16. c++学习纲要(入门必看!!!学习笔记【建议收藏!!!】)怒肝整理数万字,只求君一赞
  17. XDisplay 安装教程
  18. Poc/Exp漏洞验证利用脚本编写
  19. gdbt java_GBDT算法详解与代码实现
  20. php导入excel读取内容

热门文章

  1. tizen android模拟器,Tizen在模拟器中推送通知
  2. MATLAB动画:风景上跳动的诗行
  3. mysql 下载、运行
  4. html分享标题描述图片尺寸,微信分享网页时自定义标题、描述和图片
  5. 记一次前后端分离开发部署经历
  6. Linux新建目录并指定挂载点,Linux中将/var等已有目录挂载到新添加的硬盘
  7. ffmpeg 命令集的简单实用方法
  8. 基于免疫优化算法的物流配送中心选址规划研究(Matlab实现)
  9. 电商直播”“国潮”火到国外 这些中式表达用英语怎么翻译?
  10. 用CSS3制作照片墙