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


猜你喜欢
- GO语言结构体方法跟结构体指针方法的区别首先,我定了三个接口、一个结构和三个方法:type DeptModeA interface {Nam
- 一、如何实现可迭代对象和迭代器对象?实际案例某软件要求从网络抓取各个城市气味信息,并其次显示:北京: 15 ~ 20 天津: 17 ~ 22
- python自带日志管理模块logging,使用时可进行模块化配置,详细可参考博文Python日志采集(详细)。但logging配置起来比较
- Macromedia官方将在其他软件中内建Fireworks技术称为Fireworks技术,网上也称之为内建图片编辑器。Dreamweave
- 本文实例讲述了Java使用JDBC连接数据库的实现方法,是Java数据库程序设计里非常实用的重要技巧。分享给大家供大家参考。具体如下:JDB
- 请问如何在ASP中使用ADO调用Oracle的存储过程?我们可以在下面的代码里使用微软Oracle 的OLE DB Provider ,包括
- 题目:转换RBG颜色值我们知道在网页中的颜色值设置都是用16进制的RGB来表示的,比如#FFFFFF,表示R:255,G:255,B:255
- 1. lock互斥锁知识点:lock.acquire()# 上锁lock.release()# 解锁#同一时间允许一个进程上一把锁 就是Lo
- 如何修改数据库名(db_name)及实例名(Instance_name or Service_name) Nid是Oracle从9iR2开始
- <% Function XMLEncode(byVal sText) sText = Replace(sText, "&am
- 最近项目中有一个小需求,查找json文件中某个key或者value的路径,所以就写了一个简单的小脚本,比较粗糙。#!/usr/bin/env
- 具体代码见下。在此程序中,由于使用了变量,我们需将全部聊友的昵称用“,”(逗号)来隔开,储存到application("visit
- 生产图片区域,上传按钮#btn可替换自己想要的图片<ul id="ul_pics" class="ul_
- 1. test.txt文件,数据以逗号分割,第一个数据为x坐标,第二个为y坐标,数据如下:1.1,22.1,23.1,34.1,540,38
- 前言上次查看了微信好友的位置信息,想了想,还是不过瘾,于是就琢磨起了把微信好友的个性签名拿到,然后分词,接着分析词频,最后弄出词云图来。1.
- 前言python对动态验证码、滑动验证码的降噪和识别,在各种自动化操作中,我们经常要遇到沿跳过验证码的操作,而对于验证码的降噪和识别,的确困
- 语言的内存管理是语言设计的一个重要方面。它是决定语言性能的重要因素。无论是C语言的手工管理,还是Java的垃圾回收,都成为语言最重要的特征。
- 在实际处理数据时,因系统内存有限,我们不可能一次把所有数据都导出进行操作,所以需要批量导出依次操作。为了加快运行,我们会采用多线程的方法进行
- APScheduler就是定时进行周期性的运行某些程序,在语言程序编写中,一直会遇到些定时服务,有时是根据时间定时,有时在固定的位置上进行定
- 导语:近年来,全世界都纷纷投身网络热潮。从小企业到大公司,再到网络学校和大学,大家都在努力提升自己的网络影响力,这样既免费为自身品牌做广告,