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

使用Python实现自动编写Word全自动化系统

这篇文章主要介绍了如何使用Python中的python-docx实现自动编写word文档;感兴趣的小伙伴可以一块学习一下!

目录

一、引言:

二、系统介绍

1、根据模板新建Word

2、样式迁移

三、使用场景

四、核心代码部分

1、执行功能

五、项目运行

六、源码获取


一、引言:

工作中有大量的报告编写需求,在不停地复制粘贴之后,突然想到,这种高度重复的工作有没有编程可以实现的方法呢?

经过查找相关内容发现一个关键词叫做RPA(流程自动化,各位去搜索一下这个关键词,会发现和我想要实现的需求完全一致,只是这个词一般在财务金融之类的环境中提起)。

那么python可以实现RPA吗?继续搜索发现有很多包,这里介绍一下python-docx,一个用来生成Word文档的包。

二、系统介绍

1、根据模板新建Word

由 Markdown 生成初稿 Word(可清空模板,仅保留封面);

2、样式迁移

将已有 Word(或初稿)迁移到目标模板并统一样式 ;

三、使用场景

我们学生在写做毕设论文时,有模板不想自己写Word怎么办;

工作时,整理word文档抓耳挠腮怎么办;

这时候我们的Word全自动化系统v1.0就出现了;界面如下:

功能1:我们上传一个模板,然后选择——AI帮我们写好的md格式的文档;然后再点击保存为选择一个保存路径,这样我们就生成了一个符合模板格式的Word文档文件。

功能2:我们上传一个模板,然后选择我们需要转换样式的源Word;然后样式映射是自动选填的,我们再选择一个输出路径;给我们转换后的Word文档起一个名字;点击执行功能2,这样我们转换的Word文档就成功了。

四、核心代码部分

1、执行功能

     def _run_feature1(self):try:tpl = self.template_path.get().strip()md = self.md_path.get().strip()outp = self.out_new_path.get().strip()if not tpl or not Path(tpl).exists():messagebox.showwarning("提示", "请先选择模板 .docx")returnif not md or not Path(md).exists():messagebox.showwarning("提示", "请先选择 Markdown 文件")returnPath(outp).parent.mkdir(parents=True, exist_ok=True)python_exe = self._resolve_python()self._ensure_deps(python_exe)script_dir = Path(__file__).resolve().parentargs = [python_exe, str((script_dir / "assemble.py").resolve()) ,"--md", md, "--ref", tpl, "--out", outp]if self.clear_template.get():args.append("--clear-template")if self.keep_cover.get():args.append("--keep-cover")if self.apply_normal.get():args.append("--apply-normal")args.append("--verbose")self._log("运行: " + " ".join(args))# 强制使用 UTF-8 读取子进程输出,避免 Windows 下 cp936/gbk 解码报错completed = subprocess.run(args,capture_output=True,text=True,encoding="utf-8",errors="replace",)if completed.stdout:self._log(completed.stdout)if completed.returncode != 0 and completed.stderr:self._log(completed.stderr)messagebox.showerror("失败", "功能1执行失败,请查看日志")returnmessagebox.showinfo("完成", f"已生成: {outp}")except Exception as exc:self._log(str(exc))messagebox.showerror("异常", str(exc))
    def _run_feature2(self):try:tpl = self.template_path.get().strip()src = self.migrate_src_path.get().strip()mapf = self.migrate_map_path.get().strip()outp = self.migrate_out_path.get().strip()if not tpl or not Path(tpl).exists():messagebox.showwarning("提示", "请先选择模板 .docx")returnif not src or not Path(src).exists():messagebox.showwarning("提示", "请选择需要调整的目标 Word 文件")returnif not mapf or not Path(mapf).exists():messagebox.showwarning("提示", "请选择样式映射 YAML (style_map.yaml)")returnPath(outp).parent.mkdir(parents=True, exist_ok=True)# 目前使用 assemble.py 的“清空+保留封面+不写入内容”的方式导出空白文档再复制样式;# 或者直接调用 migrate_template.py,假设该脚本已支持 --src --tpl --outpython_exe = self._resolve_python()self._ensure_deps(python_exe)script_dir = Path(__file__).resolve().parentscript = (script_dir / "migrate_template.py").resolve()if script.exists():args = [python_exe, str(script), "--src", src, "--tpl", tpl, "--map", mapf, "--out", outp]if self.clear_template.get():args.append("--clear-template")if self.keep_cover.get():args.append("--keep-cover")if self.apply_normal.get():args.append("--apply-normal")else:messagebox.showwarning("提示", "migrate_template.py 不存在,无法执行功能2")returnself._log("运行: " + " ".join(args))completed = subprocess.run(args,capture_output=True,text=True,encoding="utf-8",errors="replace",)if completed.stdout:self._log(completed.stdout)if completed.returncode != 0 and completed.stderr:self._log(completed.stderr)messagebox.showerror("失败", "功能2执行失败,请查看日志")returnmessagebox.showinfo("完成", f"已输出: {outp}")except Exception as exc:self._log(str(exc))messagebox.showerror("异常", str(exc))

五、项目运行

首先安装Python 3.10+;然后导入我们的源码到Python编辑器;点击绿色三角箭头运行即可;

六、源码获取

关注GZH:小猿讲编程;输入“python全自动化系统”即可获取。

http://www.dtcms.com/a/414202.html

相关文章:

  • 用flash做的经典网站微信公众号制作平台
  • OpenAI正式推出GPT-5-Codex增强型AI编程助手,该工具专为软件工程师设计
  • SpringMVC 进阶:核心组件详解与参数绑定全攻略
  • SpringMVC 实战:整合 MyBatis 实现完整 CRUD
  • Interleaving-Reasoning-Generation - 交错推理生成技术
  • 【C++】:继承全面解析
  • 大良营销网站建设机构设计专业所需网站
  • Spark专题-第二部分:Spark SQL 入门(8)-算子介绍-sort
  • 知识体系_分布式内存计算框架_spark
  • 银行 网站开发 干什么wordpress路径错误
  • QML 语法基础详解
  • ExcelVBA一键生成智能散点趋势图
  • ✨WPF编程基础【1.4】:类型转换器(含示例及源码)
  • 公链分析报告 - 模块化区块链2
  • 数图实战项目(十五-2:第一阶段:从RAW数据到ISP管道,听不懂在说啥?---> 那就盘它):从奥运大屏,到手机小屏,快来挖一挖里面都有什么
  • 网站开发常见面试东莞网站优化关键词推广
  • GauGAN详解与实现
  • Word如何一次性合并多个文档
  • 互联网技术服务优化大师优化项目有
  • 状态管理库 Zustand 的接入流程与注意点
  • 河北网站建设推广电话wordpress网址导航主题
  • NFS 服务器 iSCSI 服务器
  • display this 概念、故障排错及题目
  • whisper-large-v3部署详细步骤,包括cpu和gpu方式,跟着做一次成功
  • 个人用云计算学习笔记 --16(DHCP 服务器)
  • 【Linux】基础IO与文件描述符
  • ​​FFmpeg 教程:从入门到精通,探索多媒体处理的瑞士军刀​
  • 使用ffmpeg8.0的whisper模块语音识别
  • 免费版Markdown 编辑器:Typora
  • 个人建网站有什么好处网站运营需要 做哪些工作