• Pythondocx 模块读写 Word 文档基础:创建文档、段落格式、字体格式设置方法


    Python-docx 模块读写 Word 文档基础:创建文档、段落格式、字体格式设置方法

    python-docx 模块简介:

    安装方法:pip install python-docx
    官方文档地址: python-docx 0.8.10
    python-docx 模块集成了 Word 文档的读写功能,不像 python 的 xlwt 和 xlrd 模块操作 Excel 表格,一个辅助写,一个负责读,用起来还是很方便的。

    【Python与Word】专栏简介:

    本专栏也会分两个部分来讲解:基础接口(用法)详解,实例演练 。
    基础接口讲解内容:
    1、python-doxc模块新建(写) Word 文档(预计两篇博客);
    2、python-doxc模块读取 Word 文档信息(预计一篇)。

    本篇博客主要内容:

    1、创建文档与基础操作;
    2、文档段落格式设置;
    3、字体格式设置。

    1、创建 Word 文档及基础用法:

    模块安装后,导入模块,新建 word 文档对象:

    # 导入模块
    from docx import Document
    
    doc = Document()  # 新建文档对象
    '''按模板新建 word 文档文件,具有模板文件的所有格式'''
    
    

    新建了 Document 对象后就可以用它开始工作了:

    # 增加标题:
    doc.add_heading('标题',1)
    '''
    add_heading(self, text="", level=1):
    '''
    
    # 段落正文
    par = doc.add_paragraph('第一个段落:')
    print(par) 
    # <docx.text.paragraph.Paragraph object at 0x000000000A889F08>
    '''
    add_paragraph(self, text='', style=None):
    返回一个 Paragraph 段落对象
    '''
    
    # 在段落中添加文字
    run_ = par.add_run('段落文字')
    print(run_) 
    # <docx.text.run.Run object at 0x000000000B2D31C8>
    '''
    add_run(self, text=None, style=None):
    返回一个 run 对象
    '''
    
    

    解析:
    以上代码,在文档中增加了一个标题、一个段落并在段落中增加了文字。以上三个方法都会返回相应的对象,以便后续的一些操作。

    其他一些常用方法:(在文档中增加图片、表格)

    # 增加图片
    pic_par = doc.add_picture('1.png')
    '''
    add_picture(self, image_path_or_stream, width=None, height=None):
    返回一个 InlineShape 对象
    '''
    print(pic_par)  # <docx.shape.InlineShape object at 0x000000000B2F11C8>
    
    # 增加表格
    table = doc.add_table(2,3)
    '''
    add_table(self, rows, cols, style=None):
    返回一个表格对象 
    '''
    print(table)  # <docx.table.Table object at 0x000000000B302688>
    
    # 保存文件
    doc.save('test.docx')
    
    

    2、段落格式设置:

    add_heading 方法:

    # 增加分页符
    doc.add_page_break()
    
    # 增加标题 API 分析
    for i in range(0,10):
        exec ("doc.add_heading('标题%s',%s)" % (i,i))
    # 只能设置 0-9 级标题
    
    

    add_heading 方法:是在Word 文档中增加标题,也就是Word文档中的这些快捷窗口:

    新建一个段落,并对段落格式进行设置:

    1、段落文字对齐设置:

    # 增加分页
    doc.add_page_break()
    
    par2 = doc.add_paragraph('第二个段落文本:麻烦给我的爱人来一杯MojIto,'
                             '我喜欢阅读她微醺时的眼眸,而我的咖啡,糖不用太多,'
                             '这世界已经因为她甜得过头,没有跟她笑容一样浓郁的雪茄,'
                             '就别浪费时间介绍收起来吧,拱廊的壁画,旧城的涂鸦,'
                             '所有色彩都因为她说不出话。')
    
    # Paragraph 段落格式设置
    # 段落对齐设置:# 导入对齐选项
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    
    # 设置段落文本右对齐
    par2.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.RIGHT
    '''
    可选项有:
    'LEFT', 0, 'left', 'Left-aligned'
    'CENTER', 1, 'center', 'Center-aligned.'
    'RIGHT', 2, 'right', 'Right-aligned.'
    'JUSTIFY', 3, 'both', 'Fully justified.'
    'DISTRIBUTE', 4, 'distribute', 'Paragraph characters are distrib'
                'uted to fill the entire width of the paragraph.'
    'JUSTIFY_MED', 5, 'mediumKashida', 'Justified with a medium char'
                'acter compression ratio.'
    'JUSTIFY_HI', 7, 'highKashida', 'Justified with a high character'
                ' compression ratio.'
    'JUSTIFY_LOW', 8, 'lowKashida', 'Justified with a low character '
                'compression ratio.'
    'THAI_JUSTIFY', 9, 'thaiDistribute', 'Justified according to Tha'
                'i formatting layout.'
    '''
    # 获取段落设置的对齐方式
    print(par2.alignment)
    
    

    2、段落缩进设置:

    # 段落缩进:
    # 导入缩进单位
    from docx.shared import Inches,Pt
    # 左缩进,0.5 英寸
    par2.paragraph_format.left_indent = Inches(0.5)
    # 右缩进,20 磅
    par2.paragraph_format.right_indent = Pt(20)
    # 首行缩进
    par2.paragraph_format.first_line_indent = Inches(1)
    
    

    3、段落间距设置:

    # 行间距
    # par2.paragraph_format.line_spacing = Pt(20) # 20 磅
    par2.paragraph_format.line_spacing = 1.5 # 1.5倍行距 单倍行距 1.0
    "当line_spacing设置为长度值时表示绝对距离,"
    "设置为浮点数时表示行高的倍数"
    
    # 段前间距
    par2.paragraph_format.space_before = Pt(5)
    # 段后间距
    par2.paragraph_format.space_after = Pt(10)
    
    # 设置段落内部文字在遇到需分页情况时处理状态
    par2.paragraph_format.keep_together = True  # 段中不分页
    par2.paragraph_format.keep_with_next = True # 与下段同页
    par2.paragraph_format.page_break_before = True # 段前分页
    par2.paragraph_format.widow_control = True # 孤行控制
    
    

    以上段落设置方法,其实对应Word文档中的段落设置方法.

    注:以上设置的段落格式,也均可获取到设置值,如:

    # 获取段落的左缩进,首行缩进,段前间距:
    l_space = par2.paragraph_format.left_indent
    h_space = par2.paragraph_format.first_line_indent
    b_space = par2.paragraph_format.space_before
    print(l_space,h_space,b_space) 
    # 打印结果
    # 457200 914400 63500
    
    

    4、字体格式设置:

    首先明确一个概念:

    python-docx 模块中,paragraph 段落是一个块对象,可以理解为是一个容器。run 对象也是一个块对象,可以理解为具有相同格式的一段文字集合。

    放在 word 文档中简单理解就是,一个段落包含许多文字,同一段落的文字,也可以有不同的格式。

    注意:用 add_paragraph() 方法添加段落时,如果写入了文本,就直接创建了一个 run。

    测试一下上面的 paragraph 对象:

    # 获取上面段落对象 所有 run 对象
    par2_run = par2.runs
    print(par2_run) 
    # 打印结果:
    # [<docx.text.run.Run object at 0x000000000B307048>]
    
    

    字体格式设置:

    # 新建一个段落,增加一段文字
    run_2 = doc.add_paragraph().add_run('这爱不落幕,忘了心事的国度,'
                                        '你所在之处,孤单都被征服,'
                                        '铁铸的招牌,错落着就像,'
                                        '一封封城市献给天空的情书,'
                                        '当街灯亮起,Havana漫步,'
                                        '这是世上最美丽的那双人舞。')
    # 设置字体格式
    run_2.font.name = 'Times New Roman'  # 注:这个好像设置 run 中的西文字体
    # 设置中文字体
    # 需导入 qn 模块
    from docx.oxml.ns import qn
    # run_2.font.name = '楷体'  # 注:如果想要设置中文字体,需在前面加上这一句
    run_2.font.element.rPr.rFonts.set(qn('w:eastAsia'),'楷体')
    # 设置字体大小
    run_2.font.size = Pt(14)
    # 设置加粗
    run_2.font.bold = True
    # 设置斜体
    run_2.font.italic = True
    # 设置字体颜色 需导入 rgb 颜色模块
    from docx.shared import RGBColor
    run_2.font.color.rgb = RGBColor(255,55,55) # 红色
    # 设置下划线
    # run_2.font.underline = True
    # 设置轮廓线
    # run_2.font.outline = True
    # 设置阴影
    # run_2.font.shadow = True
    # 删除线
    # run_2.font.strike = True
    # 双删除线
    # run_2.font.double_strike = True
    # 设置下标
    # run_2.font.subscript = True
    # 设置上标
    # run_2.font.superscript = True
    
    

    转载自:https://blog.csdn.net/zhouz92/article/details/107028727

  • 相关阅读:
    Lock接口、AbstractQueuedSynchronizer队列同步器、重入锁、读写锁
    SpringMVC一点简单地源码解析
    MyBatis源码部分简单地解析
    笔记本外接显示器不显示
    WPF查找指定类型的父/子控件
    java.io.EOFException: HttpConnectionOverHTTP
    Spark读取HDFS某个路径下的子文件夹中的所有文件
    utf-8 BOM前导3个字节头
    org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:spark_shuffle does not exist
    org.apache.spark.sql.AnalysisException: Table or view not found解决办法
  • 原文地址:https://www.cnblogs.com/wangyueping/p/16018206.html
Copyright © 2020-2023  润新知