Python docx库代码演示
作者:浪速之星 发布时间:2021-12-11 12:18:02
标签:Python,docx,库
Python docx库代码演示
安装
需要lxml
pip install python-docx
主业务代码
from openpyxl import Workbook
from openpyxl import load_workbook
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt,RGBColor,Cm
from docx.enum.style import WD_STYLE_TYPE
import os
# 新建输出
if os.path.exists('test_out.docx'):
os.remove('test_out.docx')
# 读表
i1 = load_workbook('业务节点分析20211022103647(1).xlsx')
print('读表结束')
i = i1['业务节点分析']
out = []
# range(x,y) x到y-1行
for h in range(523,528):
lie = []
for l in i[h]:
lie.append(l.value)
out.append(lie[8])
print(out)
print(len(out))
print('等待生成word文档')
# 创建word
doc = Document()
doc.styles['Normal'].font.name = u'宋体'
doc.styles['Normal'].font.size = Pt(10.5)
# 设置黑体字样式
style_hei = doc.styles.add_style('hei', WD_STYLE_TYPE.CHARACTER)
style_hei.font.name = '黑体'
doc.styles['hei']._element.rPr.rFonts.set(qn('w:eastAsia'), u'黑体')
# 设置宋体字样式
style_hei = doc.styles.add_style('song', WD_STYLE_TYPE.CHARACTER)
style_hei.font.name = '宋体'
doc.styles['song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
# 完成进度
# 段1
p1 = doc.add_paragraph()
# 文字
r1 = p1.add_run('完成进度',style='song')
r1.font.size = Pt(22)
r1.font.bold = True
p1.paragraph_format.space_before = Pt(17)
p1.paragraph_format.space_after = Pt(16.5)
p1.paragraph_format.line_spacing = 1.0
# 表1
table1 = doc.add_table(rows=len(out)+1,cols=4,style='Table Grid')
table1.cell(0,0).paragraphs[0].add_run('序号',style='song')
# 第二行的cell会改变原本的行宽
table1.cell(0,0).width=Cm(2)
table1.cell(0,1).paragraphs[0].add_run('案例名称',style='song')
table1.cell(0,2).paragraphs[0].add_run('测试状态',style='song')
table1.cell(0,3).paragraphs[0].add_run('时间',style='song')
for i in range(1,len(out)+1):
table1.cell(i,0).paragraphs[0].add_run(str(i),style='song')
table1.cell(i,0).width=Cm(2)
table1.cell(i,1).paragraphs[0].add_run(out[i-1],style='song')
table1.cell(i,2).paragraphs[0].add_run('待测试/测试中/完成',style='song')
'''
# 产品变更
# 段2
p2 = doc.add_paragraph()
# 文字
r2 = p2.add_run('\n一、产品变更',style='song')
r2.font.size = Pt(22)
r2.font.bold = True
p2.paragraph_format.space_before = Pt(17)
p2.paragraph_format.space_after = Pt(16.5)
p2.paragraph_format.line_spacing = 1.0
'''
# 前置条件+测试步骤描述
for i in range(1,len(out)+1):
st = str(i)+'.'+out[i-1]
# 段3
p3 = doc.add_paragraph()
# 文字
r3 = p3.add_run(st,style='hei')
r3.font.size = Pt(16)
r3.font.bold = True
p3.paragraph_format.space_before = Pt(13)
p3.paragraph_format.space_after = Pt(13)
p3.paragraph_format.line_spacing = 1.0
# 段4
p4 = doc.add_paragraph()
# 文字
r4 = p4.add_run('前置条件',style='song')
r4.font.size = Pt(18)
r4.font.bold = True
p4.paragraph_format.line_spacing = 1.0
# 表2
table2 = doc.add_table(rows=4, cols=6,style ='Table Grid')
t0 = table2.cell(0,0).paragraphs[0].add_run('号码',style='song')
t0.font.size = Pt(12)
t0.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(0,1).merge(table2.cell(0,2)).merge(table2.cell(0,3)).merge(table2.cell(0,4)).merge(table2.cell(0,5))
t1 = table2.cell(1,0).paragraphs[0].add_run('user_ID',style='song')
t1.font.size = Pt(12)
t1.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(1,1).merge(table2.cell(1,2)).merge(table2.cell(1,3)).merge(table2.cell(1,4)).merge(table2.cell(1,5))
t2 = table2.cell(2,0).paragraphs[0].add_run('acct_ID',style='song')
t2.font.size = Pt(12)
t2.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(2,1).merge(table2.cell(2,2)).merge(table2.cell(2,3)).merge(table2.cell(2,4)).merge(table2.cell(2,5))
t3 = table2.cell(3,0).paragraphs[0].add_run('cust_ID',style='song')
t3.font.size = Pt(12)
t3.font.color.rgb = RGBColor(0, 0, 255)
table2.cell(3,1).merge(table2.cell(3,2)).merge(table2.cell(3,3)).merge(table2.cell(3,4)).merge(table2.cell(3,5))
# 段5
p5 = doc.add_paragraph()
# 文字
r5 = p5.add_run('\n测试步骤描述',style='song')
r5.font.size = Pt(18)
r5.font.bold = True
p5.paragraph_format.line_spacing = 1.0
# 表3
table3 = doc.add_table(rows=2, cols=6,style ='Table Grid')
t0 = table3.cell(0,0).paragraphs[0].add_run('Order_id',style='song')
t0.font.size = Pt(12)
t0.font.color.rgb = RGBColor(0, 0, 255)
table3.cell(0,1).merge(table3.cell(0,2)).merge(table3.cell(0,3)).merge(table3.cell(0,4)).merge(table3.cell(0,5))
t1 = table3.cell(1,0).paragraphs[0].add_run('Trade_id',style='song')
t1.font.size = Pt(12)
t1.font.color.rgb = RGBColor(0, 0, 255)
table3.cell(1,1).merge(table3.cell(1,2)).merge(table3.cell(1,3)).merge(table3.cell(1,4)).merge(table3.cell(1,5))
# 段6
p6 = doc.add_paragraph()
# 文字
r6 = p6.add_run('\n(1)测试结果前台截图\n\n(2)测试结果后台验证\n相关TRADE表:\n相关SQL验证:\n ①\n ②',style='song')
r6.font.size = Pt(12)
r6.font.color.rgb = RGBColor(0, 0, 255)
p6.paragraph_format.space_after = Pt(10)
p6.paragraph_format.line_spacing = 1.5
# 保存
doc.save('test_out.docx')
print('生成test_out.docx成功')
测试代码(设置字体)
from openpyxl import Workbook
from openpyxl import load_workbook
from docx import Document
from docx.oxml.ns import qn
from docx.shared import Pt,RGBColor
from docx.enum.style import WD_STYLE_TYPE
import os
document = Document() # 新建docx文档
style_song = document.styles.add_style('Song', WD_STYLE_TYPE.CHARACTER) # 设置Song字样式
style_song.font.name = '宋体'
document.styles['Song']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体') # 将段落中的所有字体
style_song = document.styles.add_style('Kai', WD_STYLE_TYPE.CHARACTER)
style_song.font.name = '楷体'
document.styles['Kai']._element.rPr.rFonts.set(qn('w:eastAsia'), u'楷体') # 将段落中的所有字体
style_song = document.styles.add_style('Lishu', WD_STYLE_TYPE.CHARACTER)
style_song.font.name = '隶书'
document.styles['Lishu']._element.rPr.rFonts.set(qn('w:eastAsia'), u'隶书') # 将段落中的所有字体
paragraph1 = document.add_paragraph() # 添加段落
run = paragraph1.add_run(u'aBCDefg这是中文', style='Song') # 设置宋体样式
font = run.font #设置字体
font.name = 'Cambira' # 设置西文字体
paragraph1.add_run(u'aBCDefg这是中文', style='Kai').font.name = 'Cambira'
paragraph1.add_run(u'aBCDefg这是中文', style='Lishu').font.name = 'Cambira'
document.save('1.docx')
来源:https://blog.csdn.net/weixin_44476410/article/details/120943891
0
投稿
猜你喜欢
- 一、利用xpath进行(全程使用)driver.find_element_by_xpath()二、代码部分与图片内容打开淘宝网站,点击登录,
- 学校让我们在放假期间自觉Python,对于Python我是小白的不能再小白了。一切从头开始,找学习资料,看视频教程光看书看视频也不行还要自己
- 前言plt.show()展示图片的时候,截图进行保存,图片不是多么清晰如何保存高清图也是一知识点函数包名:import matplotlib
- 如下所示:import numpy as npimport pandas as pdfrom pandas import Series,Da
- 题目描述原题链接 :35. 搜索插入位置 - 力扣(LeetCode) (leetcode-cn.com)给定一个排序数组和一个目标值,在数
- 1. 反射简介1.1 反射是什么?Go语言提供了一种机制在运行时更新和检查变量的值、调用变量的方法和变量支持的内在操作,但是在编译时并不知道
- MediaPipe概述谷歌开源MediaPipe于2019年6月首次推出。它的目标是通过提供一些集成的计算机视觉和机器学习功能,使我们的生活
- 问题: pydev使用wx库开发的过程中,import时碰到wx可以识别,但是其它很多函数和变量上面全部是红叉,即无法识别。 解决方法: 1
- 在昨天关于substring的blog中有如下一段代码:也许你已经发现,在Python 3中其实有办法只用一行完成函数:>>&g
- MicroPython是Python 3语言的精简高效实现,包括Python标准库的一小部分,经过优化可在微控制器和受限环境中运行。WiFi
- 八月的UCDChina书友会主题是“信息分类和方法”,在会场中的内容是不足以简单的概述的,而这次交流至少对于分类、属性、关键词与Tag的定义
- 1、需求我们的代码已经变得无法阅读,到处都是硬编码的切片索引,我们想优化他们。2、解决方案代码中如果有很多硬编码的索引值,将导致可读性和维护
- 方法一:巧用sum函数将list列表与一个空列表相加,就能把嵌套列表合并成一个a=[[1],[2],[3],[4],[5]]merge=su
- Python有大量强大又贴心的特性,如果要列个最受欢迎排行榜,那么装饰器绝对会在其中。初识装饰器,会感觉到优雅且神奇,想亲手实现时却总有距离
- 有时候需要比较大的计算量,这个时候Python的效率就很让人捉急了,此时可以考虑使用numba 进行加速,效果提升明显~(numba 安装貌
- 通过设置全局随机种子使得每次的训练结果相同可以复现def seed_torch(seed=2018): rando
- 数据库复制:简单来说,数据库复制就是由两台服务器,主服务器和备份服务器,主服务器修改后,备份服务器自动修改。复制的模式有两种:推送模式和请求
- 本文实例讲述了Python多线程应用于自动化测试操作。分享给大家供大家参考,具体如下:多线程执行测试用例实例:import threadin
- 方法一: $(document).on('touchmove',function(e){ e.preventDefault(
- 人生苦短,快学Python!最近有位读者朋友遇到了一个小问题,私聊找小五答疑。感觉也会有其他同学会遇到,所以干脆分享出来。如下图所示,在本地