当前位置: 首页 > news >正文

【Python COM】Word 自动纵向合并相同内容单元格

使用场景

docxtempl 库不支持动态纵向合并单元格,所以写了这段代码用来曲线救国。

使用方法

需要纵向合并的单元格加上在文本末尾加上“【纵向合并】”,然后调用此函数,就会自动纵向合并相同内容的单元格。

代码

需要安装 pywin32 库。
有一定概率会出现各种 pywintypes.com_err,一般再多试几次就能解决,原因不太清楚。

def post_render(doc_path):def merge(cells: list):merge_cells.reverse()cell = merge_cells.pop()while merge_cells:cell.Merge(merge_cells.pop())word_app = win32com.client.Dispatch("Word.Application")word_app.Visible = Truedoc = word_app.Documents.Open(doc_path)tables = doc.Tablesfor table in tables:sleep(0.1)row_count = table.Rows.Countsleep(0.1)column_count = table.Columns.Count# 遍历每一列for column_index in range(1, column_count+1):merge_cells = []merge_content = ''for row_index in range(1, row_count+1):# 由于这一行可能由于合并单元格而不存在,所以需要加 try-catch 测试try:cell = table.Cell(row_index, column_index)text: str = cell.Range.Textexcept:continueif '【纵向合并】' in text:text = text.replace('【纵向合并】', '').strip()text = text.replace('\r\x07', '') # 移除换行符,避免出现多余的空行cell.Range.Text = textif merge_content == text:table.Cell(row_index, column_index).Range.Text = ''merge_cells.append(cell)else:if len(merge_cells) > 1:merge(merge_cells)cell = table.Cell(row_index, column_index) # 合并单元格后原来的 Cell 会被删除,需要重新取merge_content = textmerge_cells.clear()merge_cells.append(cell)if len(merge_cells) > 1:merge(merge_cells)doc.Save()doc.Close()# 按需调用 word_app.Quit()
http://www.lryc.cn/news/130609.html

相关文章:

  • maven 环境变量的配置
  • flutter-设置开屏页 解决开屏白屏问题
  • 简单理解Linux中的一切皆文件
  • Kubernetes的endpoint
  • 第四章,向量组,2-矩阵等价与向量组等价的关系
  • Flink源码之StreamTask启动流程
  • 【BASH】回顾与知识点梳理(三十)
  • 亿赛通电子文档安全管理系统任意文件上传漏洞复现
  • java:数据库连接池
  • 可视化绘图技巧100篇基础篇(三)-条形图(一)
  • 如何使用Redis实现附近商家查询
  • 于vue3+vite+element pro + pnpm开源项目
  • 18-组件化开发 根组件
  • springboot集成ES
  • Maven 生成编译时间和版本Java类
  • 关于uniapp微信小程序scroll-view组件使用show-scrollbar隐藏不了滚动条
  • CSS:filter滤镜 详解(用法 + 代码 + 例子 + 效果)
  • 【Unity每日一记】Physics.Raycast 相关_Unity中的“X光射线”
  • 软件报错msvcr90.dll丢失的解决方法,亲测可以修复
  • 第一百一十八回 如何获取蓝牙连接状态
  • C++11并发与多线程笔记(12) windows临界区、其他各种mutex互斥量
  • [MAUI]在.NET MAUI中实现可拖拽排序列表
  • Linux 内核内存管理 pfn_to_online_page宏
  • 『C语言初阶』第八章 -结构体
  • chatgpt汇编,两个关于chatgpt的问题
  • ps丢失d3dcompiler_47.dll怎么办,启动无反应,分享三个解决方法
  • 第三章nginx详解
  • 【二叉树前沿篇】树
  • python3 0基础学习----数据结构(基础+练习)
  • 计算机科学中的“旅行商问题”