精华内容
下载资源
问答
  • python_docx
    万次阅读 多人点赞
    2018-06-18 17:56:58

            在实习工作中,遇到用python制作word模板的任务,其实说白了就是python-docx的使用。目前网上对这一个库的介绍得很少,很零散,所以很多功能我是尽量参考其官网,但是官网上面很多功能目前只有说明文档,而代码并还没有及时更新,以至于按照官网上面做了,python却报错。比如:自定义表格的高度。下面,我对我在此次工作任务中,所遇到的一些基本的功能分别做一下说明与展示。我用的是python2.7

          1.创建文档     

    from docx import Document
    document = Document()

    若括号里面写入word文件路径,则表明打开该文件

         2.添加标题

    document.add_heading('This is my title', 0)

    但是,这个有个问题是标题下面有一条横线,对于重度强迫症的我是无法容忍的。所以我直接添加段落文字表示标题

      3.添加段落文字

    document.add_paragraph('my paragraph')

    但是,这只实现了默认格式的段落文字添加,且这里的文字只能是英文。如果要设置中文字体,且对文字设置对齐,颜色,大小等设置,则:

    from docx.shared import RGBColor
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    document.styles['Normal'].font.name = u'黑体'      #可换成word里面任意字体
    p = document.add_paragraph()
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run = p.add_run(u'我添加的段落文字')
    run.font.color.rgb = RGBColor(54,95,145)             #颜色设置,这里是用RGB颜色
    run.font.size = Pt(36)                 #字体大小设置,和word里面的字号相对应

    4.添加图片

    pic = document.add_picture('pic.png',width = Inches(1.5))     #图片和python文件不在同一个文件夹下面的时候,要补全文件地址

    默认情况下,图片在文档中是左对齐的,如果要对图片进行居中显示,在网上找了很多方法都不可行,最后找到一种方法是直接加入以下代码:

    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置

    5.添加表格

    table = document.add_table(rows=2, cols=3,style="Table Grid") #添加2行3列的表格

    表格的style有很多种,默认情况下表格是没有边框的,Table Grid格式是普通的黑色边框表格,更多表格样式可以百度。但是,我们很多时候希望对表格进行更为漂亮的修改,比如自定义表格某一列的宽度,表格的高度。

    from docx.shared import Inches
    # table.autofit = False
    col = table.columns[1]
    col.width = Inches(5)     #设置表格第2列宽度为Inches(5) 默认情况下表格是自动适应文档宽度

    对于表格的高度官网上面有说明文档,但是其库函数的代码没有更新,所以找了很久才找到下面一种方法,以后官网要是更新了代码可以按照官网上面的方法进行设置更为简单一些。

    from docx.oxml.ns import qn
    from docx.oxml import OxmlElement
    for i in range(rows):     #遍历表格的所有行
        tr = table.rows[i]._tr
        trPr = tr.get_or_add_trPr()
        trHeight = OxmlElement('w:trHeight')
        trHeight.set(qn('w:val'), "450")          
        trPr.append(trHeight)                    #表格的每一行进行高度设置,450这个值可以任意修改

    6.表格里面添加文字

    heading_cells = table.rows[0].cells     #将表格的第一行设置为表头
    for i in range(cols):         #cols为表格的列数
        p = heading_cells[i].paragraphs[0]    #利用段落功能添加文字
        run = p.add_run(Arr[i])      #把表头放在一个数组里面的,这样方便赋值
        p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER   #居中设置,默认是左对齐
    还有一种直接对表格赋值的方式:
    table.cell(i,j).text = u'表格文字'       #在表格的i行j列设置文字,默认文字在表格中是左对齐

    7.添加表格行

    row = table.add_row()

    若需要对添加的行进行赋值,其方法和上面是一样的。

    8.文档的保存

    document.save('test.docx')  #可以设置其他路径

    整体代码如下:

    from docx import Document
    from docx.oxml.ns import qn
    from docx.oxml import OxmlElement
    from docx.shared import RGBColor
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.shared import Inches
    
    
    document = Document()
    document.add_heading('This is my title', 0)
    document.add_paragraph('my paragraph')
    
    document.styles['Normal'].font.name = u'黑体'
    p = document.add_paragraph()
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    run = p.add_run(u'我添加的段落文字 ')
    run.font.color.rgb = RGBColor(54, 95, 145)
    run.font.size = Pt(36)
    
    pic = document.add_picture('logo1.PNG')
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER  # 图片居中设置
    
    rows = 2
    cols = 3
    table = document.add_table(rows=rows, cols=cols,style = "Table Grid")  # 添加2行3列的表格
    
    for i in range(rows):
        tr = table.rows[i]._tr
        trPr = tr.get_or_add_trPr()
        trHeight = OxmlElement('w:trHeight')
        trHeight.set(qn('w:val'), "450")
        trPr.append(trHeight)  # 表格高度设置
    # table.autofit = False
    col = table.columns[1]
    col.width = Inches(5)
    arr = [u'序号',u"类型",u"详细描述"]
    heading_cells = table.rows[0].cells
    for i in range(cols):
        p = heading_cells[i].paragraphs[0]
        run = p.add_run(arr[i])
        run.font.color.rgb = RGBColor(54, 95, 145)  # 颜色设置,这里是用RGB颜色
        run.font.size = Pt(12)  # 字体大小设置,和word里面的字号相对应
        p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    table.cell(1, 1).text = u'表格文字'
    table.add_row()
    document.save('test1.docx')

    运行结果如下:






    更多相关内容
  • 估计这个安装包还只兼容python 2(python2 和python3差别还是挺大的,虽然现在python 3出来很久了,但是不少三方库还没有更新),因此需要自己找一个兼容的包:python_docx-0.8.6-py2.py3-none-any.whl。然后在...
  • python_docx&docxtpl.rar

    2020-02-22 12:14:37
    安装python-docx-template最新版本为 docxtpl-0.6.3-py2.py3-none-any.whl,该库包依赖 python-docx-0.8.7.tar.gz,现在网络限制问题,下载时断时续,几兆的东西用半天,上传提供方便!
  • 需要将一份docx文档中文字,按照正文,一级标题,二级标题,页眉,页脚这些分类,将内容提取出来,生成为python对象,这个要怎么搞啊? 如果有大佬知道,麻烦可以给我讲一下么? 或者点拨我一下也可以? ...
  • python-docx-0.8.10.tar.gz

    2020-02-12 20:52:56
    其实pip list python-docx 安装不成功,安装一般就报错,主要原因是从官网的下载不稳定,而且慢,经常会断,只能先下下来,然后放到cmd所在的文件夹或者指定路径,pip list python-docx-0.8.10.tar.gz,很快就好了!
  • python_docx读取word的内容

    千次阅读 2022-04-10 13:08:46
    python读取word的内容docx安装读取word读取文本内容paragraphs读取word中的表格tables行遍历 行列循环列遍历 列行循环按位置下标获取某个元素 docx安装 安装python-docx # pip install python-docx 读取word 测试...

    docx安装

    安装python-docx

    # pip install python-docx
    

    在这里插入图片描述

    读取word

    测试文件(docx文件)
    在这里插入图片描述

    读取文本内容

    paragraphs

    获取内容的样式和样式

    • style 样式
    • text 文本本内容

    获取word的内容(非表格)

    from docx import Document
    
    # Document 类,不仅可以新建word文档,也可以打开一个本地文档
    doc = Document('python读取word测试.docx')  # 想获取的文档文件名,这里是相对路径。
    print('-----------------')
    for i in doc.paragraphs:
        print(i.style.name,i.text)
    print('-----------------')
    

    结果:可以读到样式和内容,未读取到表格样式 最后两行 normal是l空行的样式
    在这里插入图片描述

    读取word中的表格

    tables

    行遍历 行列循环

    • rows 行对象
    • columns 列对象
    from docx import Document
    # Document 类,不仅可以新建word文档,也可以打开一个本地文档
    doc = Document('python读取word测试.docx')  # 想获取的文档文件名,这里是相对路径。
    tables = doc.tables # 获取文档中所有表格对象的列表
    print('表格数量',len(tables))
    print('------------------------')
    for t in tables:
        print(t)
        rows=t.rows#行数 obj
        columns=t.columns#列数 obj
        rows_length = len(t.rows)  # 行数
        columns_length = len(t.columns)  # 列数
        for r_num in range(rows_length):#行遍历
            r_content = []
            for r_cell in rows[r_num].cells:
                r_content.append(r_cell.text)
            print(r_content)
    

    行遍历
    在这里插入图片描述

    列遍历 列行循环

    from docx import Document
    
    # Document 类,不仅可以新建word文档,也可以打开一个本地文档
    doc = Document('python读取word测试.docx')  # 想获取的文档文件名,这里是相对路径。
    
    tables = doc.tables # 获取文档中所有表格对象的列表
    print('表格数量',len(tables))
    print('------------------------')
    for t in tables:
        print(t)
        rows=t.rows#行数 obj
        columns=t.columns#列数 obj
        rows_length = len(t.rows)  # 行数
        columns_length = len(t.columns)  # 列数
        for c_num in range(columns_length):#列遍历
            c_content=[]
            for c_cell in columns[c_num].cells:
                c_content.append(c_cell.text)
            print(c_content)
    

    结果:
    在这里插入图片描述

    按位置下标获取某个元素

    • cell(row,column)
      在这里插入图片描述
    from docx import Document
    
    # Document 类,不仅可以新建word文档,也可以打开一个本地文档
    doc = Document('python读取word测试.docx')  # 想获取的文档文件名,这里是相对路径。
    tables = doc.tables # 获取文档中所有表格对象的列表
    print('表格数量',len(tables))
    print('------------------------')
    for t in tables:
        print(t)
        print(t.cell(1,1).text)#获取第2行第2列元素
    

    结果:
    在这里插入图片描述

    期待每一次的相遇

    期待每一次的相遇

    展开全文
  • 今天小编就为大家分享一篇python-docx文件定位读取过程(尝试替换),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • python库,解压后可用。 资源全名:pdf2docx-0.3.0-py3-none-any.whl
  • python_docx制作word文档

    千次阅读 多人点赞 2018-11-21 16:37:00
    python_docx制作word文档 一、docx模块 Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象...

    python_docx制作word文档

    一、docx模块

    Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。

    二、相关概念

    如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。

    1. Document对象,表示一个word文档。
    2. Paragraph对象,表示word文档中的一个段落
    3. Paragraph对象的text属性,表示段落中的文本内容。

     

    三、模块的安装和导入

    安装模块

    pip3 install python-docx

     

    注意在导入模块时,用的是import docx。

    也真是奇了怪了,怎么安装和导入模块时,很多都不用一个名字。

     

    四、读取word文本

    在了解了上面的信息之后,就很简单了,下面先创建一个D:\temp\word.docx文件,并在其中输入如下内容。

     

     写一段python代码读取

    #!/usr/bin/env python
    # coding: utf-8
    
    import docx
    #获取文档对象
    file=docx.Document("test1.docx")
    print("段落数:"+str(len(file.paragraphs)))#段落数为6,每个回车隔离一段
    
    #输出每一段的内容
    for para in file.paragraphs:
     print(para.text)
    
    #输出段落编号及段落内容
    for i in range(len(file.paragraphs)):
     print(""+str(i)+"段的内容是:"+file.paragraphs[i].text)

     

    执行输出:

    段落数:6
    清平调·其一
    【朝代】唐
    
    云想衣裳花想容,春风拂槛露华浓。
    若非群玉山头见,会向瑶台月下逢。
    
    第0段的内容是:清平调·其一
    第1段的内容是:【朝代】唐
    第2段的内容是:
    第3段的内容是:云想衣裳花想容,春风拂槛露华浓。
    第4段的内容是:若非群玉山头见,会向瑶台月下逢。
    第5段的内容是:
    View Code

     

    本文参考链接:

    https://www.jb51.net/article/133405.htm

     

    五、制作word文档

    1. 创建文档

    from docx import Document
    document = Document()
    document.save('ceshi.docx')  #保存文档

     

    执行之后,它会创建一个ceshi.docx,打开之后,内容是空的。

     

    2. 添加标题

    document.add_heading('琅琊榜', 0)

     

    完整代码如下:

    from docx import Document
    document = Document()
    
    document.add_heading('琅琊榜', 0)  # 添加标题
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下

     

    但是,这个有个问题是标题下面有一条横线,对于重度强迫症的我是无法容忍的。所以我直接添加段落文字表示标题

     

    3. 添加段落文字

    document.add_paragraph('剧情简介')

     

    完整代码如下:

    from docx import Document
    document = Document()
    
    document.add_paragraph('剧情简介')  # 添加段落
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下

     

     但是,这只实现了默认格式的段落文字添加,且这里的文字只能是英文。如果要设置中文字体,且对文字设置对齐,颜色,大小等设置,则:

    需要使用add_run()方法添加文字。

     

    4. 设置文字大小

    字体是不是太小了,可以设置文字大小。

    关于word中的字体大小对应表,请参考链接:

    https://blog.csdn.net/zhushouchen/article/details/50236817

     

    现在需要设置字体大小为一号,那么对应的数字为26

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下

     

    可以发现,它的大小就是一号!

     

    5. 设置对齐

    我需要将这些文件居中对齐,怎么办?需要导入一个类WD_ALIGN_PARAGRAPH

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    注意:这段代码,导入类方法WD_ALIGN_PARAGRAPH时,Pycharm会飘红,但是不要紧,执行不会报错!

    执行程序,打开文档,效果如下:

     

    左对齐,WD_ALIGN_PARAGRAPH.LEFT

    右对齐,WD_ALIGN_PARAGRAPH.RIGHT

    其他更多方式,请参考链接:

    https://python-docx.readthedocs.org/en/latest/api/enum/WdAlignParagraph.html#wdparagraphalignment

     

    6. 设置字体加粗

    设置run.bold = True 就可以实现加粗

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

    7. 设置字体

    我需要将文字设置为 "宋体",使用

    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')

    网上很多文章说,只需要上面一行就可以了。其实根本就没有效果,要2行代码一起设置才会有效果!

     

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

    可以发现,它已经是宋体了!之前的字体是MS Mincho

     

    8. 设置文字颜色

    我需要将标题设置为红色,需要使用RGB颜色,关于RGB颜色对照表,请参考链接:

    http://tool.oschina.net/commons?type=3

     

    那么红色对应的RGB就是255.0.0,代码就是

    run.font.color.rgb = RGBColor(255,0,0)

     

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

     

    9. 添加图片

    先从网络上下载一张图片lyb.jpb,请确保图片和python程序在同一目录

    图像大小

    默认情况下,添加图像出现在本地的大小。这通常比你想要的更大。本机大小的计算方法。因此,具有300dpi分辨率的300×300像素图像出现在一平方英寸。问题是大多数图像不包含dpi属性,它默认为72 dpi。这将使同一图像在一边,在一半左右的某处出现4.167英寸。pixels dpi

    要获得所需的图像大小,您可以以方便的单位指定其宽度或高度,如英寸或厘米:

    from docx.shared import Inches
    document.add_picture('image-filename.png', width=Inches(1.0))

    你可以自由地指定宽度和高度,但通常你不想要。如果仅指定一个,python-docx用它来计算出其他的适当换算值。这样的高宽比是保留的,你的图像看起来不拉伸。

    InchesCm提供课程,让你指定派上用场单位进行测量。在内部,python-docx使用英语公制单位,914400为英寸。所以,如果你忘记了,只是把喜欢的东西width=2,你会得到一个非常小的图像:)。你需要从导入docx.shared 子包。你可以在算术中使用它们,就像它们是一个整数,事实上它们是。因此,像一个表达式的作品就好了。width Inches(3) /thing_count

     

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

    图片居中

    默认情况下,图片在文档中是左对齐的,如果要对图片进行居中显示,在网上找了很多方法都不可行,最后找到一种方法是直接加入以下代码:

    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置

     

    完整代码如下:

    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

    10. 文字缩进

    我需要实现以下效果,就需要用到缩进了

     

    关于缩进,有3中方式

    from docx.shared import Inches
    from docx.shared import Pt
    
    #设置段落从左开始缩进,使用Inches来衡量
    paragraph_format.left_indent = Inches(0.5)
    
    #设置段落从右开始缩进,使用Pt来衡量
    paragraph_format.right_indent = Pt(20)
    
    #设置段落第一行缩进,可以与上两个缩进叠加
    paragraph_format.first_line_indent = Inches(0.5)

     

    仔细观察,上面的段落只需要用到首行缩进!

    完整代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    
    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置
    
    p = document.add_paragraph()
    run = p.add_run('剧情简介')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    p = document.add_paragraph()
    run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
    p_format = p.paragraph_format
    p_format.first_line_indent = Inches(0.2)  # 首行缩进
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

    11. 表格

    我需要实现下面的表格

     

    换行

    在剧情简介和音乐原声之间,需要有一个换行,否则就太紧凑了,使用

    document.add_paragraph(text='\r', style=None)  # 换行

     

    表格

    表格坐标体系

    一张图,就可以看明白了

     

    完整代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    
    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置
    
    p = document.add_paragraph()
    run = p.add_run('剧情简介')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    p = document.add_paragraph()
    run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
    p_format = p.paragraph_format
    p_format.first_line_indent = Inches(0.2)  # 首行缩进
    
    document.add_paragraph(text='\r', style=None)  # 换行
    
    p = document.add_paragraph()
    run = p.add_run('音乐原声')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    table = document.add_table(rows=4, cols=5)  # 4行5列的表格
    table.cell(0,0).text = "歌曲"
    table.cell(0,1).text = "演唱者"
    table.cell(0,2).text = "作曲"
    table.cell(0,3).text = "作词"
    table.cell(0,4).text = "类型"
    
    table.cell(1,0).text = "《风起时》"
    table.cell(1,1).text = "胡歌"
    table.cell(1,2).text = "孟可"
    table.cell(1,3).text = "海宴"
    table.cell(1,4).text = "主题曲、片尾曲"
    
    table.cell(2,0).text = "《红颜旧》"
    table.cell(2,1).text = "刘涛"
    table.cell(2,2).text = "赵佳霖"
    table.cell(2,3).text = "袁亮"
    table.cell(2,4).text = "插曲"
    
    table.cell(3,0).text = "《赤血长殷》"
    table.cell(3,1).text = "王凯"
    table.cell(3,2).text = "于海航"
    table.cell(3,3).text = "清彦、冰封"
    table.cell(3,4).text = "插曲"
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

    可以发现,默认的表格是没有线条的。需要设置表格样式

    表格样式

    关于表格样式,可以参考链接:

    https://blog.csdn.net/ibiao/article/details/78595295

     

    上面的链接,列举了所有的样式。注意:这些样式,都是隔行换色的!

     

    喜欢哪个,将样式名复制一下,使用以下代码实现!

    下面的代码,表示使用Table Grid样式

    table.style = document.styles['Table Grid']  # 表格样式

     

    完整代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    
    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置
    
    p = document.add_paragraph()
    run = p.add_run('剧情简介')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    p = document.add_paragraph()
    run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
    p_format = p.paragraph_format
    p_format.first_line_indent = Inches(0.2)  # 首行缩进
    
    document.add_paragraph(text='\r', style=None)  # 换行
    
    p = document.add_paragraph()
    run = p.add_run('音乐原声')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    table = document.add_table(rows=4, cols=5)  # 4行5列的表格
    table.cell(0,0).text = "歌曲"
    table.cell(0,1).text = "演唱者"
    table.cell(0,2).text = "作曲"
    table.cell(0,3).text = "作词"
    table.cell(0,4).text = "类型"
    
    table.cell(1,0).text = "《风起时》"
    table.cell(1,1).text = "胡歌"
    table.cell(1,2).text = "孟可"
    table.cell(1,3).text = "海宴"
    table.cell(1,4).text = "主题曲、片尾曲"
    
    table.cell(2,0).text = "《红颜旧》"
    table.cell(2,1).text = "刘涛"
    table.cell(2,2).text = "赵佳霖"
    table.cell(2,3).text = "袁亮"
    table.cell(2,4).text = "插曲"
    
    table.cell(3,0).text = "《赤血长殷》"
    table.cell(3,1).text = "王凯"
    table.cell(3,2).text = "于海航"
    table.cell(3,3).text = "清彦、冰封"
    table.cell(3,4).text = "插曲"
    
    table.style = document.styles['Table Grid']  # 表格样式
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

    表格字体加粗

    上面的效果还有一点不足,哪里呢?第一行没有加粗,关于表格文字加粗,这个问题找了很久,终于找到一篇文章,链接如下:

    https://www.jb51.net/article/139691.htm

     

    在它的基础上,我做了一些改进。封装了一个函数th

    完整代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    
    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置
    
    p = document.add_paragraph()
    run = p.add_run('剧情简介')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    p = document.add_paragraph()
    run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
    p_format = p.paragraph_format
    p_format.first_line_indent = Inches(0.2)  # 首行缩进
    
    document.add_paragraph(text='\r', style=None)  # 换行
    
    p = document.add_paragraph()
    run = p.add_run('音乐原声')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    table = document.add_table(rows=4, cols=5)  # 4行5列的表格
    # table.cell(0,0).text = "歌曲"
    # table.cell(0,1).text = "演唱者"
    # table.cell(0,2).text = "作曲"
    # table.cell(0,3).text = "作词"
    # table.cell(0,4).text = "类型"
    
    def th(x,y,content):
        """
        th样式
        :param x: x坐标
        :param y: y坐标
        :param content: 内容
        :return: None
        """
        # print(grid,content)
        run = table.cell(x,y).paragraphs[0].add_run(content)
        run.bold = True  # 加粗
    
    th(0,0,"歌曲")
    th(0,1,"演唱者")
    th(0,2,"作曲")
    th(0,3,"作词")
    th(0,4,"类型")
    
    table.cell(1,0).text = "《风起时》"
    table.cell(1,1).text = "胡歌"
    table.cell(1,2).text = "孟可"
    table.cell(1,3).text = "海宴"
    table.cell(1,4).text = "主题曲、片尾曲"
    
    table.cell(2,0).text = "《红颜旧》"
    table.cell(2,1).text = "刘涛"
    table.cell(2,2).text = "赵佳霖"
    table.cell(2,3).text = "袁亮"
    table.cell(2,4).text = "插曲"
    
    table.cell(3,0).text = "《赤血长殷》"
    table.cell(3,1).text = "王凯"
    table.cell(3,2).text = "于海航"
    table.cell(3,3).text = "清彦、冰封"
    table.cell(3,4).text = "插曲"
    
    table.style = document.styles['Table Grid']  # 表格样式
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

    那么第一行,能不能加一个背景颜色呢?不好意思,目前没有找到有效的方法。

    上面有很多隔行换色的样式,可以选择。如果不想要,那么就只能这样了!

     

    表格字体颜色

    我需要将表格中的 "胡歌" 变成红色,怎么办呢?

    加一个方法即可

    def td_red(table,x, y,content):
        """
        td红色字体
        :param table: 表格对象
        :param x: x坐标
        :param y: y坐标
        :param content: 内容
        :return: None
        """
        run = table.cell(x, y).paragraphs[0].add_run(content)
        run.font.size = Pt(11)
        run.font.color.rgb = RGBColor(255, 0, 0)

     

    完整代码如下:

    #!/usr/bin/env python
    # coding: utf-8
    
    from docx import Document
    from docx.shared import Pt
    from docx.enum.text import WD_ALIGN_PARAGRAPH
    from docx.oxml.ns import qn
    from docx.shared import RGBColor
    from docx.shared import Inches
    
    document = Document()
    p = document.add_paragraph()
    run = p.add_run('琅琊榜')  # 使用add_run添加文字
    run.font.size = Pt(26) #字体大小设置,和word里面的字号相对应,小一
    p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER    #段落文字居中设置
    run.bold = True  # 字体加粗
    document.styles['Normal'].font.name = '宋体'  # 设置字体
    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), '宋体')
    run.font.color.rgb = RGBColor(255,0,0) #颜色设置,这里是用RGB颜色
    
    pic = document.add_picture('lyb.jpg',width = Inches(5))  # 添加图片
    last_paragraph = document.paragraphs[-1]
    last_paragraph.alignment = WD_ALIGN_PARAGRAPH.CENTER      #图片居中设置
    
    p = document.add_paragraph()
    run = p.add_run('剧情简介')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    p = document.add_paragraph()
    run = p.add_run('梅长苏(胡歌饰)本远在江湖,却名动帝辇。江湖传言:“江左梅郎,麒麟之才,得之可得天下。”作为天下第一大帮“江左盟”的首领,梅长苏“梅郎”之名响誉江湖。然而,有着江湖至尊地位的梅长苏,却是一个病弱青年、弱不禁风,背负着十多年前巨大的冤案与血海深仇,就连身世背后也隐藏着巨大的秘密。')
    p_format = p.paragraph_format
    p_format.first_line_indent = Inches(0.2)  # 首行缩进
    
    document.add_paragraph(text='\r', style=None)  # 换行
    
    p = document.add_paragraph()
    run = p.add_run('音乐原声')
    run.font.size = Pt(22)  # 二号
    run.bold = True
    
    table = document.add_table(rows=4, cols=5)  # 4行5列的表格
    # table.cell(0,0).text = "歌曲"
    # table.cell(0,1).text = "演唱者"
    # table.cell(0,2).text = "作曲"
    # table.cell(0,3).text = "作词"
    # table.cell(0,4).text = "类型"
    
    def th(x,y,content):
        """
        th样式
        :param x: x坐标
        :param y: y坐标
        :param content: 内容
        :return: None
        """
        # print(grid,content)
        run = table.cell(x,y).paragraphs[0].add_run(content)
        run.bold = True  # 加粗
    
    def td_red(table,x, y,content):
        """
        td红色字体
        :param table: 表格对象
        :param x: x坐标
        :param y: y坐标
        :param content: 内容
        :return: None
        """
        run = table.cell(x, y).paragraphs[0].add_run(content)
        run.font.size = Pt(11)
        run.font.color.rgb = RGBColor(255, 0, 0)
    
    th(0,0,"歌曲")
    th(0,1,"演唱者")
    th(0,2,"作曲")
    th(0,3,"作词")
    th(0,4,"类型")
    
    table.cell(1,0).text = "《风起时》"
    # table.cell(1,1).text = "胡歌"
    td_red(table,1,1,"胡歌")
    table.cell(1,2).text = "孟可"
    table.cell(1,3).text = "海宴"
    table.cell(1,4).text = "主题曲、片尾曲"
    
    table.cell(2,0).text = "《红颜旧》"
    table.cell(2,1).text = "刘涛"
    table.cell(2,2).text = "赵佳霖"
    table.cell(2,3).text = "袁亮"
    table.cell(2,4).text = "插曲"
    
    table.cell(3,0).text = "《赤血长殷》"
    table.cell(3,1).text = "王凯"
    table.cell(3,2).text = "于海航"
    table.cell(3,3).text = "清彦、冰封"
    table.cell(3,4).text = "插曲"
    
    table.style = document.styles['Table Grid']  # 表格样式
    
    document.save('ceshi.docx')  #保存文档
    View Code

     

    执行程序,打开文档,效果如下:

     

     

    本文参考链接:

    https://blog.csdn.net/sinat_30711195/article/details/80725435

     

    https://www.cnblogs.com/ontheway703/p/5266041.html

     

    posted @ 2018-11-21 16:37 肖祥 阅读( ...) 评论( ...) 编辑 收藏
    展开全文
  • python___docx模块

    2020-11-28 03:02:02
    一,docx模块Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。二,相关...

    一,docx模块

    Python可以利用python-docx模块处理word文档,处理方式是面向对象的。也就是说python-docx模块会把word文档,文档中的段落、文本、字体等都看做对象,对对象进行处理就是对word文档的内容处理。

    二,相关概念

    如果需要读取word文档中的文字(一般来说,程序也只需要认识word文档中的文字信息),需要先了解python-docx模块的几个概念。

    1,Document对象,表示一个word文档。

    2,Paragraph对象,表示word文档中的一个段落

    3,Paragraph对象的text属性,表示段落中的文本内容。

    三,模块的安装和导入

    需要注意,python-docx模块安装需要在cmd命令行中输入pip install python-docx,如下图表示安装成功(最后那句英文Successfully installed,成功地安装完成)

    注意在导入模块时,用的是import docx。

    也真是奇了怪了,怎么安装和导入模块时,很多都不用一个名字,看来是很有必要出一个python版本的模块管理程序python-maven了,本段纯属PS。

    四,读取word文本

    在了解了上面的信息之后,就很简单了,下面先创建一个D:\temp\word.docx文件,并在其中输入如下内容。

    #-*- conding:utf-8 -*-

    '''Created on 2018年7月14日

    @author: Administrator'''

    importdocx

    file=docx.Document(r"F:\python从入门到放弃\7\2\wenjian.docx")print('段落:'+str(len(file.paragraphs)))# #for para in file.paragraphs:#print(para.text)

    for i inrange(len(file.paragraphs)):print("第"+str(i)+"段的内容是:"+file.paragraphs[i].text)

    1 #-*- conding:utf-8 -*-

    2 '''

    3 Created on 2018年7月14日4

    5 @author: Administrator6 '''

    7 importsys8

    9 from docx importDocument10 from docx.shared importInches11

    12 defmain():13 #reload(sys)

    14 #sys.setdefaultencoding('utf-8')

    15

    16 #创建文档对象

    17 document =Document()18

    19 #设置文档标题,中文要用unicode字符串

    20 document.add_heading(u'我的一个新文档',0)21

    22 #往文档中添加段落

    23 p = document.add_paragraph('This is a paragraph having some')24 p.add_run('bold').bold =True25 p.add_run('and some')26 p.add_run('italic.').italic =True27

    28 #添加一级标题

    29 document.add_heading(u'一级标题, level = 1',level = 1)30 document.add_paragraph('Intense quote',style = 'IntenseQuote')31

    32 #添加无序列表

    33 document.add_paragraph('first item in unordered list',style = 'ListBullet')34

    35 #添加有序列表

    36 document.add_paragraph('first item in ordered list',style = 'ListNumber')37 document.add_paragraph('second item in ordered list',style = 'ListNumber')38 document.add_paragraph('third item in ordered list',style = 'ListNumber')39

    40 #添加图片,并指定宽度

    41 document.add_picture('cat.png',width = Inches(2.25))42

    43 #添加表格: 1行3列

    44 table = document.add_table(rows = 1,cols = 3)45 #获取第一行的单元格列表对象

    46 hdr_cells =table.rows[0].cells47 #为每一个单元格赋值

    48 #注:值都要为字符串类型

    49 hdr_cells[0].text = 'Name'

    50 hdr_cells[1].text = 'Age'

    51 hdr_cells[2].text = 'Tel'

    52 #为表格添加一行

    53 new_cells =table.add_row().cells54 new_cells[0].text = 'Tom'

    55 new_cells[1].text = '19'

    56 new_cells[2].text = '12345678'

    57

    58 #添加分页符

    59 document.add_page_break()60

    61 #往新的一页中添加段落

    62 p = document.add_paragraph('This is a paragraph in new page.')63

    64 #保存文档

    65 document.save('demo1.doc')66

    67 if __name__ == '__main__':68 main()

    读取表格:

    #-*- conding:utf-8 -*-

    '''Created on 2018年7月14日

    @author: Administrator'''

    importdocx

    doc= docx.Document('wenjian.docx')for table in doc.tables: #遍历所有表格

    print('----table------')for row in table.rows: #遍历表格的所有行

    #row_str = '\t'.join([cell.text for cell in row.cells]) # 一行数据

    #print row_str

    for cell inrow.cells:print(cell.text, '\t',)print() #换行

    首先是用docx.Document打开对应的文件目录。docx文件的结构比较复杂,分为三层,1、Docment对象表示整个文档;2、Docment包含了Paragraph对象的列表,Paragraph对象用来表示文档中的段落;3、一个Paragraph对象包含Run对象的列表。 因此p.text会打印出整个的文本文档。而用doc.tables来遍历所有的表格。并且对每个表格通过遍历行,列的方式来得到所有的内容。

    但是在运行结果中并没有找到我们插入的文件对象和图片,text.txt文档。这部分该如何解析呢。首先我们需要先来认识下docx文档的格式组成:

    docx是Microsoft Office2007之后版本使用的,用新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名扩展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

    docx格式的文件本质上是一个ZIP文件。将一个docx文件的后缀改为ZIP后是可以用解压工具打开或是解压的。事实上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

    docx 格式文件的主要内容是保存为XML格式的,但文件并非直接保存于磁盘。它是保存在一个ZIP文件中,然后取扩展名为docx。将.docx 格式的文件后缀改为ZIP后解压, 可以看到解压出来的文件夹中有word这样一个文件夹,它包含了Word文档的大部分内容。而其中的document.xml文件则包含了文档的主要文本内容

    从上面的文档我们可以了解到docx文档实际上是由XML文档打包组成的。那么我们要得到其中所有的部分,可以用ZIP解压的方式来得到所有的部件。我们先试下看是否可以

    1 将docx文档改成ZIP的后缀

    2 解压文件

    解压之后得到如下几个文件

    1385177-20180714171236677-355060391.png

    点开word文件夹:有如下的文件夹。document.xml就是描述文本对象的文件

    1385177-20180714171337515-1421200941.png

    其中embeddings文件中就是我们插入的文本对象text.txt. 是一个bin文件

    1385177-20180714171408544-502894780.png

    Media文件中就是存储的图片:

    1385177-20180714171513339-701390441.png

    我们通过手动的方式将插入的文本以及图片解析出来,那么通过代码也是同样可以解析的。代码如下。

    os.chdir(r'E:\py_prj') #首先改变目录到文件的目录

    os.rename('test.docx','test.ZIP') #重命名为zip文件

    f=zipfile.ZipFile('test.zip','r') #进行解压

    for file inf.namelist():

    f.extract(file)

    file=open(r'E:\py_prj\word\embeddings\oleObject1.bin','rb').read() #进入文件路径,读取二进制文件。

    for f infile:print f

    通过上面的方式,就可以将docx中插入的文件以及图片全部解析出来。具体docx的写的方式可以参考官方文档的介绍

    python docx 中文字体设置

    解决办法:

    首先创建一个文档,要先声明一个document:

    from docx importDocument

    document= Document()

    docx内置的样式都可以通过document.styles取到。

    正文是Normal, 标题样式根据标题声明的基本,分别从Heading 1 到Heading 9, 另外还有table、list等各种word对应的样式。可以通过遍历document.styles查看。

    我们以正文Normal为例。先来看看涉及字体更改的是style object里面的哪些属性。

    document.styles[‘Normal’].font.name

    document.styles[‘Normal’]._element.rPr.rFonts

    只更改font.name是不够的,还需要调用._element.rPr.rFonts的set()方法。

    综合起来这样

    from docx.oxml.ns import qn

    document.styles['Normal'].font.name = u'宋体'

    document.styles['Normal']._element.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')

    问题解决, 表格中字体成功更改为”宋体”.

    展开全文
  • docx_python_process 从docx文件中批量提取图片表格内文字 pip安装: pip install python-docx
  • 资源分类:Python库 所属语言:Python 资源全名:data_process-0.1.29-py2.py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
  • docx template demo 样例说明
  • 资源分类:Python库 所属语言:Python 资源全名:mldock-0.8.10-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
  • python库,解压后可用。 资源全名:pySqsListener-0.8.7-py2.py3-none-any.whl
  • python-docx.rar

    2019-09-17 15:25:41
    估计这个安装包还只兼容python 2(python2 和python3差别还是挺大的,虽然现在python 3出来很久了,但是不少三方库还没有更新),因此需要自己找一个兼容的包:python_docx-0.8.6-py2.py3-none-any.whl。然后在...
  • 一个不知道正确与否的兼容文件,虽然安装后,没有报警。希望有懂得朋友指点。不希望后期学习是出现不好的状况。
  • python操作 docx

    千次阅读 2021-04-21 16:14:38
    一、安装Python-docx Python-docx是专门针对于word文档的一个模块,只能读取docx 不能读取doc文件。说白了,python就相当于windows操作系统,QQ就是跑在windows操作系统上的软件,QQ最大的作用是可以去聊天,说话。 ...
  • Python操作docx文档

    2021-01-28 16:11:27
    最近学 Python 的一部分原因是我想用Pythondocx包来写一个自动化生成word报告的脚本(需求产生动力),本来是打算用rmarkdown来出报告的,其对网页版支持比较好(样式也好看),对PDF支持也不错(毕竟可以依靠latex),...
  • python操作word文档——python-docx

    千次阅读 2022-01-18 22:50:07
    一、安装 1.python-docx pypi python-docx · PyPI 2.安装 ...pip install python-docx ...pip install python-docx -i https://pypi.tuna.tsinghua.edu.cn/simple ...python-docxpython-docx...
  • python_basic_python教程_

    2021-09-30 17:58:43
    python入门基础之一,一个非常基础的入门python小段程序
  • Python-docx简介

    2021-03-05 17:13:36
    1 python-docx 是什么?>python-docx is a Python library for creating and updating Microsoft Word (.docx) files.它是一个python库,主要用来生成和修改word。这是一个很实用的库。传送门:...
  • 1、python-docx库介绍 该模块儿可以创建、修改Word(.docx)文件; 此模块儿不属于python标准库,需要单独安装; python-docx使用官网:python-docx官网 我们在安装此模块儿使用的是pip install ...
  • 使用python-docx模块解析docx文档

    千次阅读 2022-01-25 13:29:55
    python中有python-docx及pypiwin32模块处理docx文件,python-docx模块跨平台性好,但是只能解析.docx文件,不能解析.doc文件,其可以按照段落读取word。pypiwin32模块可以处理.doc及.docx文件,但是仅限windows平台...
  • 使用pip install python-docx安装python-docx库失败,python版本为3.10.2。 解决办法: 1.先安装docx库 2.再安装python-docx库 3.安装成功
  • python_docx

    千次阅读 2015-09-14 19:29:34
    python-docxpython-docxpython用于编辑生成word文档的一个库Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档。 详细文档请见:https://python-docx.readthedocs.org/en/latest/...
  • 怎么下载python-docx模块

    千次阅读 2020-12-29 02:04:04
    下载python-docx模块的方法:首先下载python-docx安装包;然后执行【pip install ./downloads/SomeProject-1.0.4.tar.gz】命令进行安装即可。可以使用如下命令进行安装:(推荐教程:Python入门教程)pipinstallpython...
  • pythondocx用法

    2021-06-28 19:56:18
    pip install python-docx 新建或打开 import docx # 新建文档 doc_new = docx.Document() # 打开文档 doc = docx.Document(ur'D:\abc.docx') 保存文件 doc.save(path) 对象集合:包含了word文档的相关对象集合 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 22,750
精华内容 9,100
关键字:

python_docx