python+docx:(二)页眉页脚、表格操作

目录

页眉页脚

表格

表格样式

插入表格

插入行/列

合并单元格

 单元格


页眉页脚

页眉页脚操作需要访问文件的section,可通过添加页脚来添加页码。

from docx import Document
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT, WD_ALIGN_PARAGRAPH, WD_COLOR_INDEX, WD_COLOR
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT,WD_TABLE_DIRECTION
from docx.shared import Inches, Cm, Pt, RGBColordocx_file = Document()section = docx_file.sections[0]
header = section.header.paragraphs[0]  # 获取页眉对象
footer = section.footer.paragraphs[0]  # 获取页脚对象# 添加页眉
header.text = "这里是页眉"
header.style.font.size = Pt(8)
header.alignment = WD_PARAGRAPH_ALIGNMENT.LEFT# 添加页脚
footer.text = '这是页脚'
footer.style.font.size = Pt(16)
footer.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER# 页眉页脚添加表格
headers = section.header
table = headers.add_table(rows=3, cols=3, width=Cm(4.0))
table.cell(0, 0).text = '姓名'
table.cell(0, 1).text = '年龄'
table.cell(0, 2).text = '籍贯'

支持追加的方式创建内容(.add_run())

section = docx_file.sections[0]
header = section.header.paragraphs[0]  # 获取页眉对象
footer = section.footer.paragraphs[0]  # 获取页脚对象text_run = header.add_run()
text_run.text = '追加的内容'img_run = header.add_run()
img_run.add_picture(r'C:\Users\Administrator\Desktop\testfile\测试图片\8.png', width=Inches(1),height=Inches(.5))  # 可添加参数修改图片大小

表格

表格样式

官方预定义样式的取值

table_type = ['Colorful Grid', 'Colorful Grid Accent 1', 'Colorful Grid Accent 2','Colorful Grid Accent 3', 'Colorful Grid Accent 4', 'Colorful Grid Accent 5', 'Colorful Grid Accent 6','Colorful List', 'Colorful List Accent 1', 'Colorful List Accent 2', 'Colorful List Accent 3','Colorful List Accent 4', 'Colorful List Accent 5', 'Colorful List Accent 6', 'Colorful Shading','Colorful Shading Accent 1', 'Colorful Shading Accent 2', 'Colorful Shading Accent 3','Colorful Shading Accent 4', 'Colorful Shading Accent 5', 'Colorful Shading Accent 6', 'Dark List','Dark List Accent 1', 'Dark List Accent 2', 'Dark List Accent 3', 'Dark List Accent 4','Dark List Accent 5', 'Dark List Accent 6', 'Light Grid', 'Light Grid Accent 1', 'Light Grid Accent 2','Light Grid Accent 3', 'Light Grid Accent 4', 'Light Grid Accent 5', 'Light Grid Accent 6', 'Light List','Light List Accent 1', 'Light List Accent 2', 'Light List Accent 3', 'Light List Accent 4','Light List Accent 5', 'Light List Accent 6', 'Light Shading', 'Light Shading Accent 1','Light Shading Accent 2', 'Light Shading Accent 3', 'Light Shading Accent 4', 'Light Shading Accent 5','Light Shading Accent 6', 'Medium Grid 1', 'Medium Grid 1 Accent 1', 'Medium Grid 1 Accent 2','Medium Grid 1 Accent 3', 'Medium Grid 1 Accent 4', 'Medium Grid 1 Accent 5', 'Medium Grid 1 Accent 6','Medium Grid 2', 'Medium Grid 2 Accent 1', 'Medium Grid 2 Accent 2', 'Medium Grid 2 Accent 3','Medium Grid 2 Accent 4', 'Medium Grid 2 Accent 5', 'Medium Grid 2 Accent 6', 'Medium Grid 3','Medium Grid 3 Accent 1', 'Medium Grid 3 Accent 2', 'Medium Grid 3 Accent 3', 'Medium Grid 3 Accent 4','Medium Grid 3 Accent 5', 'Medium Grid 3 Accent 6', 'Medium List 1', 'Medium List 1 Accent 1','Medium List 1 Accent 2', 'Medium List 1 Accent 3', 'Medium List 1 Accent 4', 'Medium List 1 Accent 5','Medium List 1 Accent 6', 'Medium List 2', 'Medium List 2 Accent 1', 'Medium List 2 Accent 2','Medium List 2 Accent 3', 'Medium List 2 Accent 4', 'Medium List 2 Accent 5', 'Medium List 2 Accent 6','Medium Shading 1', 'Medium Shading 1 Accent 1', 'Medium Shading 1 Accent 2', 'Medium Shading 1 Accent 3','Medium Shading 1 Accent 4', 'Medium Shading 1 Accent 5', 'Medium Shading 1 Accent 6', 'Medium Shading 2','Medium Shading 2 Accent 1', 'Medium Shading 2 Accent 2', 'Medium Shading 2 Accent 3','Medium Shading 2 Accent 4', 'Medium Shading 2 Accent 5', 'Medium Shading 2 Accent 6', 'Table Grid']

测试打印所有表格样式 

for tp in table_type:docx_file.add_paragraph(text=f'表格样式测试{tp}')table_demo = docx_file.add_table(rows=3, cols=4, style=tp)table_demo.cell(0, 0).text = f'{tp}表格样式'docx_file.add_paragraph(text='\n')

插入表格

docx_table = docx_file.add_table(rows=3, cols=8, style='Light Shading Accent 6')
docx_table.autosize = False  # 自动调整大小设置
print(len(docx_table.rows))  # 获取行数
print(len(docx_table.columns))  # 获取列数# 设置表格内容样式(表格内的所有单元格文本样式)
docx_table.style.font.size = Pt(15)
docx_table.style.font.color.rgb = RGBColor(100, 100, 50)
docx_table.style.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

插入行/列

# 插入行和列(插入到最后一行或最后一列)
docx_table.add_row()
docx_table.add_column(width=Cm(8))  # 添加的列可设置列宽# 设置行高列宽
docx_table.columns[0].wigth = Cm(.5)
docx_table.rows[0].height = Cm(5)

合并单元格

合并单元格,使用单元格对象的merge方法,起始单元格.merge(终止单元格对象)

docx_table.cell(1, 1).merge(docx_table.cell(3, 3))  # 合并2行2列到4行4列的所有单元格

通过循环的方式合并某一行或某一列的操作

r = len(docx_table.rows)
c = len(docx_table.columns)
cells_to_merge = []  # 创建一个空列表
for i in range(c):  # 根据列,将需要合并的行的所有列添加到列表中cells_to_merge.append(docx_table.cell(0, i))  # 将第一行的所有单元格对象添加到列表中
for cell in cells_to_merge:  # 使用merge方法合并需要合并的单元格(循环遍历合并获取的所有要合并的单元格对象进行合并操作)cells_to_merge[0].merge(cell)

 单元格

# 单元格对象获取及设置宽高和内容
cell = docx_table.cell(2, 2)  # 获取单元格对象
# 设置行高列宽(以同一行或同一列的最大值为准)
cell.width = Cm(3)  # 设置单元格宽度
cell.height = Cm(3)  # 设置单元格宽度
cell.text = '写入数据到单元格测试'# 遍历行或列操作
for r, row in enumerate(docx_table.rows):  # 遍历行docx_table.rows;遍历列docx_table.columns# print(row.table)  # _Rows和_Columns对象里有一个table属性可以返回所属的表格对象# print(row.height)  # 获取行高# print(row._index)  # 获取行索引IDfor c, cell in enumerate(row.cells):  # 迭代所有单元格cell.text = str(r * c)  # 测试只能是str型,int型时会报错# 单元格内容样式设置(单个单元格独立设置文本内容样式)
cell2 = docx_table.cell(2, 2)
cell_paragraphs = cell2.paragraphs[0]
cell_style = cell_paragraphs.add_run('样式设置')
cell_style.font.size = Pt(40)
cell_style.font.color.rgb = RGBColor(200, 200, 100)

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

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

相关文章

Matlab Simulink 电力电子仿真-单相电压型半桥逆变电路分析

目录 一、单相电压型半桥逆变电路仿真模型 1.电路模型 2.电路模型参数 二、仿真分析 三、总结 1.优缺点 2.应用场景 一、单相电压型半桥逆变电路仿真模型 1.电路模型 单相电压型半桥逆变电路是一种常见的逆变电路,主要用于将直流电源转换为交流电源。 &…

Qt 编程专栏目录

Qt 编程专栏简介 Qt为开发者提供了一个强大的跨平台开发工具。无论你是刚刚接触Qt,还是已经在使用它构建复杂应用的开发者,这里都能为你提供有用的知识和实战技巧。 在这个专栏中,我们不仅讲解Qt的使用方法,还会结合实际开发场景…

C++入门——“C++11-lambda”

引入 C11支持lambda表达式,lambda是一个匿名函数对象,它允许在函数体中直接定义。 一、初识lambda lambda的结构是:[ ] () -> 返回值类型 { }。从左到右依次是:捕捉列表 函数参数 -> 返回值类型 函数体。 以下是一段用lam…

Day 2:Java 集合框架(List 和 Map)

目标:掌握日常工作中常用集合的基本操作。 理论知识: List: ArrayList 和 LinkedList 的区别。 特性ArrayListLinkedList底层实现基于动态数组实现,元素安索引存储基于双向链表实现,元素节点彼此连接访问速度随机访…

如何保护LabVIEW程序免遭反编译

在正常情况下,LabVIEW程序(即编译后的可执行文件或运行时文件,如 .exe 或 .llb)无法直接被反编译出源码。然而,有一些需要特别注意的点: 1. LabVIEW的编译机制 LabVIEW编译器会将源码(.vi文件&a…

提升76%的关键-在ModelMapper中实现性能提升的几种方法

目录 前言 一、ModelMapper基础知识 1、深入ModelMapper 2、深入Configuration配置 3、深入MappingEngineImpl 二、默认加载模式 1、基础测试代码 三、持续优化,慢慢提升 1、增加忽略字段 2、设置忽略空值模式 3、设置命名模式 4、采用精准匹配模式 四、…

【C语言】结构体、联合体、枚举类型的字节大小详解

在C语言中,结构体(struct)和联合体(union) 是常用的复合数据类型,它们的内存布局和字节大小直接影响程序的性能和内存使用。下面为大家详细解释它们的字节大小计算方法,包括对齐规则、内存分配方…

【优选算法】位运算

目录 常见位运算总结1、基础位运算2、给一个数n,确定它的二进制位的第x位上是0还是13、将一个数n的二进制位的第x位改成14、将一个数n的二进制位的第x位改成05、位图的思想6、提取一个数n的二进制位中最右侧的17、将一个数n的二进制位中最右侧的1变为08、位运算的优…

jQuery九宫格抽奖,php处理抽奖信息

功能介绍 jQuery九宫格抽奖是一种基于jQuery库的前端抽奖效果。通过九宫格的形式展示抽奖项,用户点击抽奖按钮后,九宫格开始旋转,最终停在一个随机位置上,此位置对应的抽奖项为用户的中奖结果。 本文实现九宫格的步骤为&#xf…

AI界的信仰危机:单靠“规模化”智能增长的假设,正在面临挑战

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

Unity类银河战士恶魔城学习总结(P149 Screen Fade淡入淡出菜单)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了进入游戏和死亡之后的淡入淡出动画效果 UI_FadeScreen.cs 1. Animator 组件的引用 (anim) 该脚本通过 Animator 控制 UI 元…

【C语言篇】探索 C 语言结构体:从基础语法到数据组织的初体验

我的个人主页 我的专栏:C语言,希望能帮助到大家!!!点赞❤ 收藏❤ 目录 什么是结构体结构体的定义与使用结构体内存布局嵌套结构体与指针结构体数组的操作结构体与函数结构体内存对齐机制位域与结构体的结合动态内存分…

COMSOL工作站:配置指南与性能优化

COMSOL Multiphysics 求解的问题类型相当广泛,提供了仿真单一物理场以及灵活耦合多个物理场的功能,供工程师和科研人员来精确分析各个工程领域的设备、工艺和流程。 软件内置的#模型开发器#包含完整的建模工作流程,可实现从几何建模、材料参数…

全面解析LLM业务落地:RAG技术的创新应用、ReAct的智能化实践及基于业务场景的评估框架设计

1. 如何让LLM更好的业务落地常见方法 等待新的大型模型版本:但是,每个新版本也会有时间限制。 自己训练模型:这种方法成本高昂且耗时,需要大量基础设施。它也只是一个临时解决方案。 LoRA(低秩自适应)微调:这种方法更简单、更便宜,可以更频繁地进行,但不能在线进行。模…

大语言模型LLM的微调代码详解

代码的摘要说明 一、整体功能概述 这段 Python 代码主要实现了基于 Hugging Face Transformers 库对预训练语言模型(具体为 TAIDE-LX-7B-Chat 模型)进行微调(Fine-tuning)的功能,使其能更好地应用于生成唐诗相关内容的…

js中判断数组和判断对象的方法

判断数组 Array.isArray() 方法 这是最推荐的方法,简单明了。它可以检测数组的情况,并且不会误报其他类型。 const arr [1, 2, 3]; console.log(Array.isArray(arr)); // trueconst notArray { key: value }; console.log(Array.isArray(notArray))…

Leetcode 131 Palindrome Partition

题意 把一个字符串分割成多个回文字符串的partition,返回所有的可能partion 链接 https://leetcode.com/problems/palindrome-partitioning/description/ 思考 这只是dfs套了一个回文问题 题解 dfs每次截取一段字符串,判断是否是回文 退出条件是遍…

qt5.14.2跟vs2022配置

1.qt6要在线安装,安装时间比较长,要求网络要稳定,不适合快速安装 2.使用qt5.14.2离线安装包,安装速度快,可以快速安装。 3.安装完qt.5.14.2后打开QtCreate4.0.1,打开 工具->选项->Kits,发现如下图: 没…

【拥抱AI】RAG(Retrieval-Augmented Generation)知识库的切片策略及其改进

1. RAG简介 RAG是一种结合了信息检索和文本生成的技术,它通过从一个外部的知识库中检索相关信息来增强生成模型的能力。这种方法可以提高生成内容的相关性和准确性,特别是在处理长文档时,有效的文本切片策略对于提升检索效率和质量至关重要。…

ESP32 wifi smartConfig 配网时密码错误导致一直死循环问题解决

项目场景 硬件:ESP32-LyraT-Mini V1.2开发板,使用的是ESP32-WROVER-E 模组。 程序:基于smart_config示例程序测试 问题描述 烧录程序后,debug打印“smartconfig_example: Scan done”信息后,打开手机app“EspTouch”进行配网,如果密码输入正确,正常的debug信息如下:…