Python docx库代码演示

目录
  • 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')

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注我们的更多内容!

(0)

相关推荐

  • 详解python中docx库的安装过程

    python中docx库的简介 python-docx包,这是一个很强大的包,可以用来创建docx文档,包含段落.分页符.表格.图片.标题.样式等几乎所有的word文档中能常用的功能都包含了,这个包的主要功能便是用来创建文档,相对来说用来修改功能不是很强大.一般情况下在Anaconda中不自带,需另行下载. 导入docx的方法 我的实现方法是通过pip工具在线下载:首先打开cmd命令窗口,然后输入pip install python-docx,然后回车静等.最后命令行中出现Successfull

  • Python中docx2txt库的使用说明

    docx2txt的Github地址 docx2txt是基于python的从docx文件中提取文本和图片的库. 代码是从python-docx中获取的.它也可以从页眉,页脚和超链接中提取文本.它现在也可以提取图像. 安装 pip install docx2txt 运行 1.命令行运行 # extract text docx2txt file.docx # extract text and images docx2txt -i /tmp/img_dir file.docx 2.在python中调用

  • Python docx库用法示例分析

    本文实例分析了Python docx库用法.分享给大家供大家参考,具体如下: 打开及保存文件: from docx import Document document = Document('test.docx') document.save('test.docx') 添加文本: document.add_paragraph('test text') 调整文本位置格式为居中: from docx import Document from docx.enum.text import WD_ALIGN

  • Python docx库代码演示

    目录 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,RGBColo

  • Python docx库删除复制paragraph及行高设置图片插入示例

    目录 引言 1.复制paragraph 2.删除paragraph 3.插入图片和paragraph行高设置 引言 这两天做一个python小工具,用到了docx库,涉及到paragraph的删除.,还有行高设置等技术,这里做一下记录. 1.复制paragraph 即用来原文档的加粗.斜体,下划线,颜色等属性的,官方没有提供paragraph的接口,只能自己实现: # paragraph 的 def get_para_data(output_doc_name, paragraph): "&quo

  • 使用Python第三方库发送电子邮件的示例代码

    目录 1. 安装 yagmail 第三方库 2. 开启 POP3.IMAP 和 SMTP 服务 2.1 POP3.IMAP 和 SMTP 简介 2.2 开启 POP3.IMAP.和 SMTP 协议 3. 发送邮件 3.1 发送第一封电子邮件 3.2 群发邮件 3.3 给邮件添加附件 3.4 设置定时器 4. 总结 Python 作为当前最热门的编程语言之一,不仅仅是因为它的学习成本低.入门容易,还因为它具有丰富的生态环境,包括内置的模块以及第三方的库,使用它能够做很多事情.例如,办公自动化也是

  • python sklearn库实现简单逻辑回归的实例代码

    Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression).降维(Dimensionality Reduction).分类(Classfication).聚类(Clustering)等方法.当我们面临机器学习问题时,便可根据下图来选择相应的方法. Sklearn具有以下特点: 简单高效的数据挖掘和数据分析工具 让每个人能够在复杂环境中重复使用 建立NumPy.Scipy.MatPlotLib之上 代

  • 用python生成与调用cntk模型代码演示方法

    由于一些原因,视频录制要告一段落了.再写一篇关于cntk的文章分享出来吧.我也很想将这个事情进行下去.以后如果条件允许还会接着做. cntk2.0框架生成的模型才可以支持python.1.0不支持. python可以导入cntk.exe生成的框架,也可以导入python调用cntk生成的框架.举两个例子: 1 .导入cntk.exe生成的框架. from cntk.ops.functions import load_model from PIL import Image import numpy

  • python muggle_ocr库用法及实例代码

    说明 1.muggle_ocr是一款轻量级的ocr识别库,对于python来说是识别率较高的图片验证码模块. 2.主要用于识别各种类型的验证码,一般文字提取效果稍差. 安装命令 pip install muggle_ocr 实例 import muggle_ocr # 初始化sdk:model_type 包含了 ModelType.OCR/ModelType.Captcha 两种模式,分别对应常规图片与验证码 sdk = muggle_ocr.SDK(model_type=muggle_ocr.

  • python turtle库画圣诞树详细代码教程

    目录 1. 圣诞树的本体 2. 蝴蝶结 3. 星星 4. 圣诞帽 5. 圣诞袜 6. 最后奉上完整代码 首先我们的目标是这样子的: 那么他有什么成分呢?有圣诞树的本体.大小蝴蝶结.星星.圣诞帽和袜子. 首先我们来画圣诞树的本体. 1. 圣诞树的本体 圣诞树本体是这样子的: 代码: class TreeBackBone(): def __init__(self): pencolor("pink") pensize(10) self.layer1() self.layer2() self.

  • 代码解析python标准库logging模块

    目录 问题1:如何获取caller的(文件名,行号,函数名)? findCaller内容如下: currentframe函数的定义: 问题2: Logger对象的层级,父子关系如何实现的? Manager的getLogger()定义如下: 问题1:如何获取caller的(文件名,行号,函数名)? 当新增一条log记录时,最终将调用Logger类的_log方法,这个方法首先会创建一个LogRecord对象.LogRecord对象需要(filename, lineno, funcname)参数信息.

随机推荐