Python-docx库详解:轻松实现Word文档自动化生成与图片尺寸控制

news2025/3/20 5:32:46

Python-docx库详解:轻松实现Word文档自动化生成与图片尺寸控制

在现代办公自动化的浪潮中,文档处理是一项不可或缺的任务。Python作为一种强大的编程语言,提供了丰富的库来简化这些任务。其中,python-docx库是处理Word文档的有力工具,它允许开发者以编程方式创建、修改和分析Word文档。本文将详细介绍python-docx库的使用方法,特别是如何利用Cm模块控制图片尺寸。

1. python-docx库简介

python-docx是一个强大的Python库,允许开发者创建和修改Microsoft Word (.docx)文件。该库提供了丰富的API,使开发者能够控制文档的各个方面,包括段落、表格、图片插入和格式化等。

2. 环境准备

在开始之前,开发者需要安装python-docx库。可以使用pip命令轻松完成安装:

pip install python-docx

3. 基本使用

3.1 创建新文档

使用python-docx创建新文档非常简单:

from docx import Document

doc = Document()
doc.save("新文档.docx")

3.2 添加段落和文本

可以轻松向文档中添加段落和文本:

paragraph = doc.add_paragraph()
run = paragraph.add_run("这是一段文本内容")

4. 图片处理与Cm模块

python-docx库中的Cm模块是图片尺寸控制的关键工具。它允许开发者以厘米为单位指定图片尺寸,使文档更加专业和统一。

4.1 Cm模块详解

Cm模块位于docx.shared包中,用于设定图片尺寸大小。一个重要的特性是:只需给定宽度或高度,另一个维度会自动计算以保持图片原始比例。

from docx.shared import Cm

# 只指定宽度为16厘米,高度会自动计算
doc.add_picture("image.png", width=Cm(16))

# 只指定高度为10厘米,宽度会自动计算
doc.add_picture("image.png", height=Cm(10))

5. 实际案例分析

以下是一个实际的案例,展示如何使用python-docx创建包含多张图片的文档:

from docx import Document
from docx.shared import Cm
import os

dir_path_ = os.path.abspath(os.path.dirname(os.path.dirname(__file__)))

def _2word():
    path = "202.docx"
    pic_base_path = f"{dir_path_}\结果"
    doc = Document()
    
    # 添加第一个段落
    p1 = doc.add_paragraph()
    p1.add_run("命名格式:\n几次完成(一次/多次)")
    
    # 遍历指定目录中的PNG文件并添加到文档
    for file in os.listdir(pic_base_path):
        if file.endswith("png") and "False" in file:
            paragraph3 = doc.add_paragraph()
            run = paragraph3.add_run(str(file[:-6] + ".png"))
            # 使用Cm模块控制图片宽度为16厘米
            doc.add_picture(f"{pic_base_path}/{file}", width=Cm(16))
    
    # 添加流程图部分
    p2 = doc.add_paragraph()
    p2.add_run("\n流程图\n")
    doc.add_picture(f"{dir_path_}\method5.png", width=Cm(16))
    
    # 保存文档
    doc.save(path)

if __name__ == "__main__":
    _2word()

在这个例子中,代码实现了以下功能:

  1. 创建一个新的Word文档
  2. 添加标题段落说明命名格式
  3. 遍历指定目录下符合条件的PNG图片,并将它们添加到文档中
  4. 每张图片都设置为16厘米宽,高度自动计算
  5. 添加流程图部分标题
  6. 添加流程图并同样设置宽度为16厘米
  7. 保存文档到指定路径

6. 高级功能

除了基本的文档和图片处理,python-docx还提供了许多高级功能:

6.1 文本格式化

from docx.shared import Pt, RGBColor
from docx.enum.text import WD_ALIGN_PARAGRAPH

paragraph = doc.add_paragraph()
run = paragraph.add_run("格式化文本")
run.font.size = Pt(16)  # 设置字体大小为16磅
run.font.bold = True    # 设置为粗体
run.font.color.rgb = RGBColor(255, 0, 0)  # 设置文字颜色为红色
paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER  # 居中对齐

6.2 表格操作

table = doc.add_table(rows=3, cols=3)
cell = table.cell(0, 0)
cell.text = "表格示例"

6.3 页面设置

from docx.shared import Mm
section = doc.sections[0]
section.page_height = Mm(297)  # A4纸高度
section.page_width = Mm(210)   # A4纸宽度

7. 注意事项

在使用python-docx库时,开发者应注意以下几点:

  1. 图片路径问题:确保图片路径正确,尤其是在跨平台应用时
  2. 文档保存:记得在所有操作完成后保存文档
  3. 单位换算:除了Cm,还可以使用Inches、Pt等单位
  4. 大文件处理:处理大量图片时,注意内存使用和性能优化

8. 总结

python-docx库是一个功能强大的工具,可以帮助开发者轻松创建和修改Word文档。特别是Cm模块的使用,使得控制图片尺寸变得简单而精确。通过本文介绍的方法,开发者可以轻松实现文档自动化生成,提高工作效率。

无论是生成报告、创建模板文档,还是批量处理Word文件,python-docx都能提供强大的支持。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2318169.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 中下划线 “_” 的多面性:从变量到约定

# Python中下划线“_”的多面性:从变量到约定 在Python的语法体系里,下划线“_”看似毫不起眼,实则扮演着极为重要且多样化的角色。它不仅能作为普通变量参与编程,更在多个特殊场景下有着独特的用途与约定。深入理解下划线的各种…

Vue3项目开发:状态管理实践指南

# Vue3项目开发:状态管理实践指南 一、引言 背景介绍 在Vue项目中,状态管理是一个非常重要的话题。合理的状态管理能够帮助我们更好地组织和管理数据,提升项目的可维护性和可扩展性。本文将深入探讨Vue3项目中状态管理的最佳实践,…

数据结构-------栈

顺序栈: 一、数据结构定义 数据元素 DATATYPE typedef struct person {char name[32];char sex;int age;int score; } DATATYPE;顺序栈结构 SeqStack typedef struct list {DATATYPE *head; // 栈空间首地址int tlen; // 栈总容量(total leng…

机器学习概要

文章目录 一、什么是机器学习 二、机器学习的种类 1. 有监督学习 2. 无监督学习 3.强化学习 三、机器学习的应用 四、机器学习的步骤 1. 数据的重要性 2. 数据和学习的种类 3. 可视化 一、什么是机器学习 机器学习指的是计算机根据给定的问题、课题或环境进行学习&a…

【LangChain入门 2 Model组件】开始!LLM Models简单对话

文章目录 一、使用langchain_ollama二、采用DeepSeek的API三、Model 介绍3.1 OllamaLLM 预训练模型3.2 ChatOllama 聊天预训练模型3.3 OllamaEmbeddings 实现一个helloworld,跑通一个简单的对话。 后面章节会正式介绍LangChain的各个功能。 后台llm的端口可以任意选…

C++20 中线程管理与取消机制的深度剖析

文章目录 std::jthread:更智能的线程管理背景与优势构造函数与 std::stop_token 的集成 std::stop_token、std::stop_source 和 std::stop_callback:灵活的取消机制std::stop_token:取消请求的指示器std::stop_source:取消请求的发…

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析

Vue3 核心特性解析:Suspense 与 Teleport 原理深度剖析 一、Teleport:突破组件层级的时空传送 1.1 实现原理图解 #mermaid-svg-75dTmiektg1XNS13 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-s…

FPGA——实现LED流水灯

文章目录 一、Quartusll_18.1和VS Code软件的关联二、DE2-115的时钟电路三、流水灯的分层次设计四、总结 一、Quartusll_18.1和VS Code软件的关联 1.先打开Quartus II 软件,然后选择菜单栏“Tools”下的“Options…”。 2.点击“Options…”,在弹出的对…

Excel 小黑第12套

对应大猫13 涉及金额修改 -数字组 -修改会计专用 VLOOKUP函数使用(查找目标,查找范围(F4 绝对引用),返回值的所在列数,精确查找或模糊查找)双击填充柄就会显示所有值 这个逗号要中文的不能英…

滚动元素的新api

点击的时候需要双重视图滚动 itemClick(id) {// 滚动到对应位置this.$nextTick(() > {// 找到对应 id 在 initList2 中的索引const index this.initList2.findIndex((item) > item.id Number(id));if (index ! -1) {// 获取所有菜单项const menuItems document.queryS…

多机调度问题(C语言)

代码如下&#xff1a; #include<stdio.h> #include<stdlib.h>int compare(void* a, void* b)//比较函数&#xff0c;用于qsort按处理时间从大到小排序 {return *(int*)a - *(int*)b; }int LPT(int jobs[], int n, int m)//多机调度问题的LPT算法 {qsort(jobs, n, …

烽火HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包及注意点说明

之前发布过这个固件包&#xff0c;关于烽火HG680-KA&#xff0f;HG680-KB_海思HI3798MV310_安卓9.0_U盘强刷固件包详细说明一下&#xff0c;汇总总结一些常遇到的情况&#xff0c;这次固件会分开发布&#xff0c;以免混淆。 上一个帖子地址&#xff1a;烽火HG680-KA&#xff0…

996引擎 - 红点系统

996引擎 - 红点系统 总结NPC 红点(TXT红点)Lua 红点1. Red_Point.lua2. UI_Ex.lua参考资料以下内容是在三端 lua 环境下测试的 总结 红点系统分几个部分组成。 M2中设置变量推送。 配置红点表。 Envir\Data\cfg_redpoint.xls 2.1. UI元素中找到ID填写 ids 列。 主界面挂载…

3.17BUUCTF练习day1

BUUCTF练习day1 [极客大挑战 2019]EasySQL1&#xff08;字符型&#xff0c;账号密码型&#xff0c;get型&#xff09; 判断闭合方式 在用户名输入1‘&#xff0c;此时密码先输入任何数字时&#xff0c;出现语法错误 说明闭合方式为单引号闭合&#xff0c;在判断完闭合方式后…

【贪心算法】柠檬水找零

1.题目解析 860. 柠檬水找零 - 力扣&#xff08;LeetCode&#xff09; 2.讲解算法原理 分情况讨论 5---》直接收下 10---》找五元&#xff0c;收下 20----》105△ ----》555 由于5元更有用&#xff0c;则尽可能保留5元 3.代码 class Solution {public boolean lemonadeCh…

黑马跟学.苍穹外卖.Day08

黑马跟学.苍穹外卖.Day08 苍穹外卖-day8课程内容1. 工作台1.1 需求分析和设计1.1.1 产品原型1.1.2 接口设计 1.2 代码导入1.2.1 Controller层1.2.2 Service层接口1.2.3 Service层实现类1.2.4 Mapper层 1.3 功能测试1.3.1 接口文档测试1.3.2 前后端联调测试 1.4 代码提交 2. Ap…

ABAP语言的动态编程(4) - 综合案例:管理费用明细表

本篇来实现一个综合案例&#xff1a;管理费用明细表。报表在实际项目中&#xff0c;也有一定的参考意义&#xff0c;一方面展示类似的报表&#xff0c;比如管理费用、研发费用等费用的明细&#xff0c;使用业务比较习惯的展示格式&#xff1b;另一方面正好综合运用前面学习的动…

通过Geopandas进行地理空间数据可视化

目录 引言 安装与导入 数据加载与探索 数据预处理 基本地图可视化 添加其他数据到地图上 空间分析与查询 地图叠加与分组 空间缓冲区 交互式地图可视化 实际应用案例 城市规划 环境监测 结论 引言 在数据科学领域,地理空间数据可视化扮演着至关重要的角色。它不…

在Vue3中使用Echarts的示例

1.常用-引用ts文件方式 1.1 导出ts文件-一个简单的柱状图 export const baseBarChart (xdata: string[], data: number[][], legendData: string[]) > {if (data.length 0) {return noData;}// 定义颜色数组const color [#00CCCC,#FF9900,#1677DC,#FF6666,#B366FF,#666…

GHCTF web方向题解

upload?SSTI! import os import refrom flask import Flask, request, jsonify,render_template_string,send_from_directory, abort,redirect from werkzeug.utils import secure_filename import os from werkzeug.utils import secure_filenameapp Flask(__name__)# 配置…