【Python】利用python-docx生成word版本学生花名册

如图,可以用python创建word文档,生成一个学生的花名册。生成的过程:先下载第三方依赖包,安装依赖包,然后引入依赖文件,创建docx文件,添加标题,创建表头,创建表格正文,居中填写表头内容、项目行、表格正文。

目录

一、安装Python-docx包

(一)下载

1、官网下载

2、下载步骤

(二)安装步骤

二、文件格式

(一)标题栏

(二)表格

1、表头

2、项目行

3、表格正文

三、python-docx中表格相关知识

(一)表格设计

1、表格框架

2、单元格

3、段落

(二)表格内容居中

1、水平居中

2、垂直居中

四、完整程序代码

(一)引入依赖

(二)声明学生花名册相关变量

(三)最终代码


一、安装Python-docx包

(一)下载

1、官网下载

官网网址:python-docx · PyPI

2、下载步骤

点击Download files,点击python-docx-0.8.11.tar.gz压缩包开始下载。

(二)安装步骤

打开cmd命令行窗口,把刚刚下载的python-docx-0.8.11.tar.gz压缩包复制到命令行窗口默认的目录下,一般都是C:\Users\****>。

在命令行输入pip install python-docx-0.8.11.tar.gz后回车,执行完安装的结果如下图:

二、文件格式

(一)标题栏

word文档设定一个标题栏,标题为“金庸小学学生花名册”。

(二)表格

1、表头

表头为1行1列,是表格的名称“四年(5)班”。

2、项目行

学生花名册一共有学号、姓名、性别、出生日期、民族5个项目,项目行为1行5列。

3、表格正文

表格正文为10个学生的具体信息,为10行5列。

三、python-docx中表格相关知识

(一)表格设计

1、表格框架

因为表头和项目行、表格正文格式不一样,所以需要创建两个表格,1个为1行1列的表格table1,1个为11行5列的表格table2。

python-docx中创建表格的方法为add_table(行数,列数)

# 创建表头
table1=document.add_table(1,1)

# 创建表格
table2=document.add_table(11,5)

2、单元格

python-docx中表格中的单元格为table.cell(行序号,列序号)。

3、段落

python-docx中表格中的单元格中的文字内容为段落,为table.cell(行序号,列序号).paragraphs[段落序号]。

(二)表格内容居中

1、水平居中

table1.cell(0,0).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER

2、垂直居中

因为每个表格里创建的是一个段落,段落行距离,有段前、段后距离,可以设置段前、段后的距离等于行距的一半即可以完成垂直居中。

table1.cell(0,0).paragraphs[0].paragraph_format.line_spacing = Pt(12)
table1.cell(0,0).paragraphs[0].paragraph_format.space_before = Pt(6)
table1.cell(0,0).paragraphs[0].paragraph_format.space_after = Pt(6)

四、完整程序代码

(一)引入依赖

#引入word文件包
from docx import Document

#引入表格对齐文件包
from docx.enum.table import WD_TABLE_ALIGNMENT

#引入表格段落对齐文件包
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

#引入英尺、磅尺寸文件包
from docx.shared import Inches,Pt

#引入表格单元格水平对齐文件包
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT

(二)声明学生花名册相关变量

# 学生学号起始编号
student_no=20230001

# 花名册项目名称
student_item = ["学号","姓名","性别","出生日期","民族"]

# 学生姓名列表
student_name = ["丁春秋","于万亭","王语嫣","平四","乔峰","李秋水","沈城","胡斐","袁紫衣","梅超风"]

# 学生民族列表
student_ethnic = ["汉族","汉族","白族","汉族","契丹","党项","汉族","汉族","汉族","汉族"]

# 学生性别列表
student_gender = ["男","男","女","男","男","女","男","男","女","女"]

# 学生出生年代列表
student_birthday = [1028,1700,1074,1738,1062,1000,1475,1753,1755,1191]

(三)最终代码

#引入word文件包
from docx import Document

#引入表格对齐文件包
from docx.enum.table import WD_TABLE_ALIGNMENT

#引入表格段落对齐文件包
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT

#引入英尺、磅尺寸文件包
from docx.shared import Inches,Pt

#引入表格单元格水平对齐文件包
from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT


# 学生学号起始编号
student_no=20230001

# 花名册项目名称
student_item = ["学号","姓名","性别","出生日期","民族"]

# 学生姓名列表
student_name = ["丁春秋","于万亭","王语嫣","平四","乔峰","李秋水","沈城","胡斐","袁紫衣","梅超风"]

# 学生民族列表
student_ethnic = ["汉族","汉族","白族","汉族","契丹","党项","汉族","汉族","汉族","汉族"]

# 学生性别列表
student_gender = ["男","男","女","男","男","女","男","男","女","女"]

# 学生出生年代列表
student_birthday = [1028,1700,1074,1738,1062,1000,1475,1753,1755,1191]

# 创建文件
document = Document()

# 添加标题
h=document.add_heading('金庸小学学生花名册',0)

# 标题居中
h.paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 创建表头
table1=document.add_table(1,1)

# 创建表格
table2=document.add_table(11,5)

# 填写表头内容
table1.cell(0,0).text="四年(5)班"

# 表头内容格式:行间距12磅,段前6磅,段后6磅,也就是竖直居中
table1.cell(0,0).paragraphs[0].paragraph_format.line_spacing = Pt(12)
table1.cell(0,0).paragraphs[0].paragraph_format.space_before = Pt(6)
table1.cell(0,0).paragraphs[0].paragraph_format.space_after = Pt(6)

# 表头内容格式:水平居中
table1.cell(0,0).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中


# 填写项目名称行
for i in range(5):
    table2.cell(0,i).text=student_item[i]
    table2.cell(0,i).paragraphs[0].paragraph_format.line_spacing = Pt(12)
    table2.cell(0,i).paragraphs[0].paragraph_format.space_before = Pt(6)
    table2.cell(0,i).paragraphs[0].paragraph_format.space_after = Pt(6)
    table2.cell(0,i).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中

# 填写学号列
for j in range(1,11):
    table2.cell(j,0).text=str(student_no+j-1)
    table2.cell(j,0).paragraphs[0].paragraph_format.line_spacing = Pt(12)
    table2.cell(j,0).paragraphs[0].paragraph_format.space_before = Pt(6)
    table2.cell(j,0).paragraphs[0].paragraph_format.space_after = Pt(6)
    table2.cell(j,0).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中

# 填写姓名列
for j in range(1,11):
    table2.cell(j,1).text=sudent_name[j-1]
    table2.cell(j,1).paragraphs[0].paragraph_format.line_spacing = Pt(12)
    table2.cell(j,1).paragraphs[0].paragraph_format.space_before = Pt(6)
    table2.cell(j,1).paragraphs[0].paragraph_format.space_after = Pt(6)
    table2.cell(j,1).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中

# 填写性别列
for j in range(1,11):
    table2.cell(j,2).text=sudent_gender[j-1]
    table2.cell(j,2).paragraphs[0].paragraph_format.line_spacing = Pt(12)
    table2.cell(j,2).paragraphs[0].paragraph_format.space_before = Pt(6)
    table2.cell(j,2).paragraphs[0].paragraph_format.space_after = Pt(6)
    table2.cell(j,2).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中

# 填写出生年代列
for j in range(10):
    table2.cell(j,3).text=str(student_birthday[j])
    table2.cell(j,3).paragraphs[0].paragraph_format.line_spacing = Pt(12)
    table2.cell(j,3).paragraphs[0].paragraph_format.space_before = Pt(6)
    table2.cell(j,3).paragraphs[0].paragraph_format.space_after = Pt(6)
    table2.cell(j,3).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中

# 填写民族列
for j in range(1,11):
    table2.cell(j,4).text=sudent_ethnic[j-1]
    table2.cell(j,4).paragraphs[0].paragraph_format.line_spacing = Pt(12)
    table2.cell(j,4).paragraphs[0].paragraph_format.space_before = Pt(6)
    table2.cell(j,4).paragraphs[0].paragraph_format.space_after = Pt(6)
    table2.cell(j,4).paragraphs[0].paragraph_format.alignment = WD_TABLE_ALIGNMENT.CENTER # 水平居中

# 保存文档
document.save('student.docx')

(全文完)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

人员着装识别算法 yolo

人员着装识别系统通过yolo网络模型识别算法,人员着装识别系统算法通过现场安装的摄像头识别工厂人员及工地人员是否按要求穿戴着装,实时监测人员的着装情况,并进行相关预警。目标检测架构分为两种,一种是two-stage,一种…

无涯教程-Android - 环境设置

您可以从Oracle的Java网站下载最新版本的Java JDK-Java SE下载,您将在下载的文件中找到有关安装JDK的说明,按照给定的说明安装和配置安装程序。最后,将PATH和JAVA_HOME环境变量设置为引用包含 java 和 javac 的目录,通常分别是java_install_dir/bin和java_install_d…

vue2 支持图片放大

添加 :preview-src-list属性 <el-imagev-for"item in specialData.urls":src"item":key"item.index":preview-src-list[item]class"pictrue"/>

【Python】从入门到上头—Python基础(2)

文章目录 一.基础语法1.编码2.标识符3.保留字4.注释5.行与缩进6.多行语句7.数字(Number)类型8.字符串(String)9.空行10.等待用户输入11.同一行显示多条语句12.多个语句构成代码组13.print 输出14.import 与 from...import 二.基本数据类型1.变量和赋值2.多个变量赋值3.标准数据…

对 K8s Pod 安全有多少认识?

写在前面 简单整理&#xff0c;博文内容涉及&#xff1a; PSP 的由来PSA 的发展PSA 使用认知 不涉及使用&#xff0c;用于了解 Pod 安全 API 资源理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全…

机器学习概述

文章目录 机器学习应用背景数据挖掘个性化定制替代人力的软件应用 什么是机器学习示例 机器学习系统举例IBM Watson DeepQAIBM Watson技术需求相关技术 -- DeepQA 通用机器学习系统设计设计一个学习系统 1系统设计1 —— 用于训练的经验 设计学习系统 2系统设计2 —— 到底应该…

胜券汇:底部显现 三大因素有望助推股市短期内探底回升

胜券汇以为&#xff0c;权益商场的底部特征现已开始闪现&#xff0c;估值触底、危险偏好反弹、盈余逐渐修正三大要素有望助推股市短期内探底上升。不过&#xff0c;中长期而言&#xff0c;A股的核心矛盾在于经济复苏的斜率&#xff0c;从当时经济形势看&#xff0c;方针仍有必要…

vue数组对象中按某一字段排序

给下列数组字段中的month排序 第一步&#xff1a;methods中写一个方法如下&#xff1a; sortBy(attr, rev) {//第二个参数没有传递 默认升序排列if(rev undefined) {rev 1;} else {rev (rev) ? 1 : -1;}return function(a, b) {a a[attr];b b[attr];if(a < b) {retu…

四信重磅推出5G RedCap AIoT摄像机 RedCap轻量级5G终端新品首发!

6月6日&#xff0c;四信受邀出席移动物联网高质量发展论坛&#xff0c;并在移动物联网新产品发布环节隆重推出5G RedCap AIoT摄像机&#xff0c;再次抓紧需求先机&#xff0c;为行业用户创造无限可能&#xff01; 两大应用场景 助推RedCap走深向实 火遍全网络的RedCap应用场景可…

F5负载均衡器参与的Kubernetes架构选项介绍

F5负载均衡器在业内有着很高的知名度&#xff0c;因为它不仅是F5的代表作&#xff0c;负载均衡&#xff08;Load Balance&#xff09;这一词汇正是由F5发明并引入国内的。当前&#xff0c;F5的能力不断拓展&#xff0c;从早期聚焦F5负载均衡器到现在的分布式云应用架构&#xf…

豆瓣《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉八一新书

豆瓣《乡村振兴战略下传统村落文化旅游设计》中国建筑出版传媒许少辉八一新书

Linux服务器安装部署MongoDB数据库 – 【无公网IP远程连接】

文章目录 前言1.配置Mongodb源2.安装MongoDB数据库3.局域网连接测试4.安装cpolar内网穿透5.配置公网访问地址6.公网远程连接7.固定连接公网地址8.使用固定公网地址连接 前言 MongoDB是一个基于分布式文件存储的数据库。由 C 语言编写&#xff0c;旨在为 WEB 应用提供可扩展的高…

【论文精读】Swin Transformer: Hierarchical Vision Transformer using Shifted Windows

Swin Transformer: Hierarchical Vision Transformer using Shifted Windows 前言Abstract1. Introduction2. Related Work3. Method3.1. Overall Architecture3.2. Shifted Window based Self-AttentionSelf-attention in non-overlapped windowsShifted window partitioning …

Leetcode17电话号码的组合

思路&#xff1a;用字典的形式保存号码的映射&#xff0c;实际组合是前一个数字串的组合加上后面一个数字的所有可能组合 answer_dict{2:[a,b,c],3:[d,e,f],4:[g,h,i],5:[j,k,l],6:[m,n,o],7:[p,q,r,s],8:[t,u,v],9:[w,x,y,z]} class Solution:def letterCombinations(self, d…

DataWhale 机器学习夏令营第三期——任务二:可视化分析

DataWhale 机器学习夏令营第三期 学习记录二 (2023.08.23)——可视化分析1.赛题理解2. 数据可视化分析2.1 用户维度特征分布分析2.2 时间特征分布分析 DataWhale 机器学习夏令营第三期 ——用户新增预测挑战赛 学习记录二 (2023.08.23)——可视化分析 2023.08.17 已跑通baseli…

二极管:常用二极管封装

常用二极管封装 1、DO-41 2、DO-201AD 3、DO-35 4、LL-34 5、DO-214AC (SMA) 6、SMB

Docker之私有仓库 RegistryHarbor

目录 一、Docker私有仓库&#xff08;Registry&#xff09; 1.1 Registry的介绍 二、搭建本地私有仓库 2.1首先下载 registry 镜像 2.2在 daemon.json 文件中添加私有镜像仓库地址 2.3运行 registry 容器 2.4Docker容器的重启策略 2.5为镜像打标签 2.6上传到私有仓库 2…

ThinkPHP 资源路由的简单使用,restfull风格API

ThinkPHP 资源路由的简单使用&#xff0c;restfull风格API 一、资源控制器二、资源控制器简单使用 一、资源控制器 资源控制器可以轻松的创建RESTFul资源控制器&#xff0c;可以通过命令行生成需要的资源控制器&#xff0c;例如生成index应用的TestR资源控制器使用&#xff1a…

Nginx详解之Nginx高级配置

Nginx详解之Nginx高级配置 1、网页的状态页2、Nginx第三方模块2.1echo模块 3、变量3.1内置变量3.2自定义变量 4、自定义访问日志4.1 自定义访问日志的格式4.2自定义json 格式日志 5、Nginx压缩功能&#xff08;重要&#xff09;6、https 功能6.1Nginx的HTTPS工作原理的详解6.2启…

配置DNS服务的正反向解析

正向解析 安装DNS服务 2.在服务器端 编辑区域配置文件&#xff0c;选择一个解析模版进行修改---------/etc/named.rfc1912.zones 修改第一第三行 编辑数据配置文件&#xff0c;使用cp -a命令完全拷贝一份正向解析模版&#xff08;named.localhost&#xff09;&#xff0c;在…