yyc9527 2024-02-05 10:21 采纳率: 83.9%
浏览 8
已结题

批量合并并保存带合并单元格格式的Excel表

有很多如图的工作簿或sheet页,有很多合并的单元格
需求 把多个工作簿或sheet页保留到一个表中,并保持格式不变
试过了 python ,powerquery没有解决 除了复制粘贴还有什么好的方法吗 谢谢

img

  • 写回答

3条回答 默认 最新

  • 叫兽-郭老师 Java领域新星创作者 2024-02-05 10:26
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    批量合并多个带格式的 Excel 工作簿或工作表,同时保留合并单元格的格式信息,并不是一个直接的任务,因为像 pandas 这样的常用 Python 库在读取 Excel 时,默认不会保留样式和格式信息。然而,可以借助一些专门处理 Excel 格式内容的库来实现这一需求。

    使用 Python 的解决方案可能需要结合 openpyxlxlrd, xlwt(对于旧版 .xls 文件)以及 xlsxwriter 等库。openpyxl 可以读取、写入并修改带有格式信息的 Excel 文件,包括合并单元格的格式。

    以下是一个简化的步骤:

    1. 使用 openpyxl 打开每个工作簿,读取所有工作表。
    2. 对于每个要合并的工作表,不仅复制其数据,还要复制合并单元格的区域信息。
    3. 创建一个新的工作簿用于保存合并后的结果。
    4. 将各个源工作表的数据及合并区域信息逐个复制到目标工作簿中对应的新工作表,并重新应用合并单元格的格式设置。

    示例代码逻辑如下:

    from openpyxl import load_workbook, Workbook
    
    # 假设你已经有了一个包含文件名列表的变量 files
    # files = ['file1.xlsx', 'file2.xlsx', ...]
    
    # 创建一个新的工作簿用于存储合并结果
    result_wb = Workbook()
    
    for filename in files:
        # 加载原始工作簿
        wb = load_workbook(filename)
        
        for sheet_name in wb.sheetnames:
            # 获取源工作表
            src_ws = wb[sheet_name]
            
            # 在结果工作簿中创建新的工作表
            dest_ws = result_wb.create_sheet(title=sheet_name)
    
            # 复制数据
            for row in src_ws.iter_rows():
                dest_ws.append([cell.value for cell in row])
    
            # 复制合并单元格信息并应用到目标工作表
            for merged_cell_range in src_ws.merged_cells.ranges:
                dest_ws.merge_cells(start_row=merged_cell_range.min_row,
                                    start_column=merged_cell_range.min_col,
                                    end_row=merged_cell_range.max_row,
                                    end_column=merged_cell_range.max_col)
    
    # 保存合并后的工作簿
    result_wb.save('merged_workbook.xlsx')
    

    请注意上述代码仅为示意逻辑,实际操作时需确保合并单元格的位置正确映射到目标工作表,并且可能还需要根据实际情况调整以适应复杂的单元格样式和格式复制。

    另外,除了编程方法外,如果是在 Microsoft Office 环境下,可以尝试使用 Power Query (在 Excel 2016 及以后版本中称为“获取和转换”功能) 来实现多工作簿和工作表的合并,同时保持格式不变。这通常能够更好地处理复杂格式,但如果是批处理大量文件,编写脚本自动化会更为高效。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月26日
  • 已采纳回答 2月18日
  • 创建了问题 2月5日

悬赏问题

  • ¥15 求:可不可以提供一些 在国内可以用,低代码不要太难 在电脑上可以下载的 制作app的软件
  • ¥60 找人回答kibana8.14.3二次集成开发,自定义插件ui导航栏如何设置
  • ¥15 fluke高精度万用表8845A型号测交流电压一直跳动,且去掉输入后显示不归零
  • ¥15 不同模型怎么用同一个shader
  • ¥15 安卓启动没有ais proxy与v4l2的log打印
  • ¥15 go怎么读取mdb文件里面的数据
  • ¥60 Matlab联合CRUISE仿真编译dll文件报错
  • ¥15 脱敏项目合作,ner需求合作
  • ¥15 脱敏项目合作,ner需求合作
  • ¥30 Matlab打开默认名称带有/的光谱数据