美文网首页
python操作word文档-0

python操作word文档-0

作者: Chaweys | 来源:发表于2020-12-27 14:12 被阅读0次

    #coding=utf-8
    #安装包 python-docx
    
    #举例1、写入简单段落
    import docx
    #创建word文档对象
    file=docx.Document()
    #添加段落
    file.add_paragraph("床前明月光")
    file.add_paragraph("疑是地上霜")
    file.add_paragraph("举头望明月")
    file.add_paragraph("低头思故乡")
    #保存至word文档
    file.save("test1.docx")
    
    test1-docx.png

    #举例2、插入表格并填充内容、设置对齐方式
    import docx
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT              #用来设置单元格水平对齐方式
    from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT         #用来设置单元格垂直对齐方式
    from docx import shared 
    from docx.shared import Cm,Inches,Pt                           #用来设置单元格内元素的宽高
    
    #创建word文档对象
    doc=docx.Document()
    
    table=doc.add_table(5,5)      #定义表格对象 5行5列
    table.cell(0,0).text='123'    #在第一行第一列单元格插入字符123,注:表格都是从0开始计数
    table.cell(0,1).text='456'    #在第一行第二列单元格插入字符456,注:表格都是从0开始计数
    
    #设置第一行第一列单元格水平居中|左对齐|右对齐
    table.cell(0,0).paragraphs[0].paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER|WD_PARAGRAPH_ALIGNMENT.LEFT|WD_PARAGRAPH_ALIGNMENT.RIGHT
    
    #设置第一行第二列单元格垂直居中|顶部对齐|底部对齐
    table.cell(0,1).vertical_alignment=WD_CELL_VERTICAL_ALIGNMENT.CENTER|WD_CELL_VERTICAL_ALIGNMENT.TOP|WD_CELL_VERTICAL_ALIGNMENT.BOTTOM
    
    #在以下单元格第一行第三列的单元格中插入图片,并设置宽度为5cm。注:当只设置图片一个方向的尺寸(宽或高),另一个方向的只存会自动进行缩放
    table.cell(0,2).paragraphs[-1].add_run().add_picture("1.jpg",width=shared.Cm(5))
    #在以下单元格第一行第四列的单元格中插入图片,并设置高度为5英寸。注:当只设置图片一个方向的尺寸(宽或高),另一个方向的只存会自动进行缩放
    table.cell(0,3).paragraphs[-1].add_run().add_picture("2.jpg",height=shared.Inches(5))
    
    doc.save("test2.docx")
    
    test2-docx.png

    #举例3、设置页面布局
    '''
    页面方向有横向与竖向,新建Document时,默认的是竖向页面,要设置为我们目标的横向,需要设置设置三个参数:
    section.orientation、section.page_width、section.page_height
    
    注:如果只设置了参数section_orientation=WD_ORIENT.LANDSCAPE,不设置另外两个参数,页面方向并不发生变化。
    如果设置了section.page_width、section.page_height两个参数,不设置section.orientation页面会根据前两个参数设置页面尺寸进行调整。
    '''
    import docx
    from docx.shared import Cm,Inches,Pt           #用来设置单元格内元素的宽高
    from docx.enum.section import WD_ORIENTATION   #用来设置章节的横向或纵向
    
    
    doc=docx.Document()  #创建word文档对象
    sec=doc.sections     #获取word文档对象章节列表,新建的文档默认只有一节
    sec0=sec[0]          #取第一节并命名为sec0
    
    '''
    新建的文档默认为竖向,改为横向须设置三个参数
    设置页面方向为横向必须同时设置高度和宽度才有用
    若只设置sec0.orientation而不设置宽和高,则方向发生变化.(LANDSCAPE-横向)
    若只设置了宽和高,不设置sec0.orientation,则页面的宽和高会改变,但仍为纵向.
    '''
    sec0.orientation=WD_ORIENTATION.LANDSCAPE
    sec0.page_width=Cm(21)
    sec0.page_height=Cm(30)
    
    sec0.left_margin=Cm(1)
    sec0.right_margin=Cm(1)
    sec0.top_margin=Cm(1)
    sec0.bottom_margin=Cm(1)
    
    
    table=doc.add_table(5,5)     #定义表格对象 5行5列
    table.cell(0,0).text='123'   #在第一行第一列单元格插入字符123
    table.cell(1,0).text='456'
    table.cell(0,1).text='789'
    
    
    doc.save("test3.docx")
    
    test3-docx.png

    #举例4、将一个文件夹中的图片以列表形式排列在word中
    import os
    imagepath="./picture/"
    imagelist=os.listdir(imagepath)
    print(imagelist)
    
    import docx
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT              #用来设置单元格水平对齐方式
    from docx.enum.table import WD_CELL_VERTICAL_ALIGNMENT         #用来设置单元格垂直对齐方式
    from docx import shared
    from docx.shared import Cm,Inches,Pt                           #用来设置单元格内元素的宽高
    from docx.enum.section import WD_ORIENTATION                   #用来设置章节的横向或纵向
    
    doc=docx.Document()
    sec=doc.sections
    sec0=sec[0]
    
    sec0.orientation=WD_ORIENTATION.LANDSCAPE
    sec0.page_width=Cm(21)
    sec0.page_height=Cm(29.7)
    
    sec0.left_margin=Cm(1)
    sec0.right_margin=Cm(1)
    sec0.top_margin=Cm(1)
    sec0.bottom_margin=Cm(1)
    
    
    rowNums=eval(input("请输入图片列表转成的行数:"))
    colNums=eval(input("请输入图片列表转成的列数:"))
    table=doc.add_table(rowNums*3,colNums+1)
    
    for row in range(rowNums+1):
        for col in range(colNums+1):
            try:
                imageName=imagelist[row*3+col]
                print("#####")
                print(imageName)
                print(imagepath+imageName)
                print((row*2,col))
    
                table.cell(row*2, col).paragraphs[0].paragraph_format.alignment=WD_PARAGRAPH_ALIGNMENT.CENTER
                table.cell(row*2, col).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
                table.cell(row*2+1, col).paragraphs[0].paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
                table.cell(row*2+1, col).vertical_alignment = WD_CELL_VERTICAL_ALIGNMENT.CENTER
    
                table.cell(row*2,col).text=imageName
                table.cell(row*2+1,col).paragraphs[-1].add_run().add_picture(imagepath+imageName,width=shared.Cm(2))
    
            except:
                pass  #如果有其它类型的文件则忽略
    
    doc.save("test4.docx")
    
    结果:
    ['1.jpg', '2.jpg', '3.jpg', '4.jpg', '5.jpg', '6.jpg', '7.jpg', '8.jpg', '9.jpg']
    请输入图片列表转成的行数:2
    请输入图片列表转成的列数:2
    #####
    1.jpg
    ./picture/1.jpg
    (0, 0)
    #####
    2.jpg
    ./picture/2.jpg
    (0, 1)
    #####
    3.jpg
    ./picture/3.jpg
    (0, 2)
    #####
    4.jpg
    ./picture/4.jpg
    (2, 0)
    #####
    5.jpg
    ./picture/5.jpg
    (2, 1)
    #####
    6.jpg
    ./picture/6.jpg
    (2, 2)
    #####
    7.jpg
    ./picture/7.jpg
    (4, 0)
    #####
    8.jpg
    ./picture/8.jpg
    (4, 1)
    #####
    9.jpg
    ./picture/9.jpg
    (4, 2)
    
    test4-docx.png

    相关文章

      网友评论

          本文标题:python操作word文档-0

          本文链接:https://www.haomeiwen.com/subject/kleonktx.html