Python处理Office文件模版代码(自己参考用)-Word-python-docx包

一、安装

pip install python-docx

二、样例模版

from docx import Document
def create_doc():
    doc = Document()
    doc.add_heading('Hello', 0)
    doc.save('./file_path/testDoc.docx')
def addContent_doc():
    doc1 = Document()
    # 增加标题
    doc1.add_heading('1级标题', level=1)
    doc1.add_heading('2级标题', level=2)
    # 增加段落
    doc1.add_paragraph('这是一个段落')
    doc1.add_paragraph('这是一个段落,效果等同于0级标题。','Title')          # 效果等于0级标题
    paragraph = doc1.add_paragraph('这是一个段落特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别特别长,展示自动换行效果。')
    paragraph.add_run('=========》这是后续添加的内容')
    paragraph = doc1.add_paragraph('这是另一个段落')
    # 增加列表
    doc1.add_paragraph('这是一个无序列表')
    doc1.add_paragraph('AAA', style='List Bullet')
    doc1.add_paragraph('BBB', style='List Bullet')
    doc1.add_paragraph('CCC', style='List Bullet')
    doc1.add_paragraph('这是一个有序列表')
    doc1.add_paragraph('AAA', style='List Number')
    doc1.add_paragraph('BBB', style='List Number')
    doc1.add_paragraph('CCC', style='List Number')
    # 增加引用
    doc1.add_paragraph('这是一个引用', style='Intense Quote')
    # 增加图片
    from docx.shared import Inches
    doc1.add_picture('./file_path/testPicture.jpg', width=Inches(5))
    # 增加表格
    table = doc1.add_table(rows=1, cols=3)
    cells = table.rows[0].cells
    cells[0].text = '111'
    cells[1].text = '222'
    cells[2].text = '333'
    data = [
        ['AAA','BBB','CCC'],
        ['AAA','BBB','CCC'],
    ]
    for i,n,w in data:
        cells = table.add_row().cells
        cells[0].text = i                                                   # 不可以写数字
        cells[1].text = n
        cells[2].text = w
    doc1.save('./file_path/testDoc.docx')

def setStyle_doc():
    from docx.shared import Pt, RGBColor, Inches
    from docx.oxml.ns import qn
    doc2 = Document()
    # 设置字体
    p1 = doc2.add_paragraph('This is paragraph1.')
    p1.add_run('This is Content 1.1\n').bold = True
    p1.add_run('This is Content 1.2\n').italic = True
    p1.add_run('This is Content 1.3\n').font.size = Pt(26)
    p1.add_run('This is Content 1.4\n').font.strike = True
    p1.add_run('This is Content 1.5\n').font.shadow = True
    p1.add_run('This is Content 1.6\n').font.color.rgb = RGBColor(255,130,71)
    p1.add_run('This is Content 1.7\n').font.name = '微软雅黑'
    run = p1.add_run('测试中文字体设置 1.8\n')
    run.font.name = ''
    run._element.rPr.rFonts.set(qn('w:eastAsia'), '微软雅黑')
    # 设置段落格式
    from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
    doc2.add_paragraph('This is paragraph2.\n').paragraph_format.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER
    doc2.add_paragraph('dafsdfadfad;lkfjas;dkljfa;sjf;jas;fja;sj;gausdfgua[esuf[aueijaf;lidj;jdfjas;ljdifja;siodjfpaijsd;fajio;sdja;ofijsd;oaijsd;ofjia;oisdjfadf]]').paragraph_format.left_indent = Inches(0.5)
    doc2.add_paragraph('dafsdfadfad;lkfjas;dkljfa;sjf;jas;fja;sj;gausdfgua[esuf[aueijaf;lidj;jdfjas;ljdifja;siodjfpaijsd;fajio;sdja;ofijsd;oaijsd;ofjia;oisdjfadf]]').paragraph_format.first_line_indent = Inches(0.5)
    doc2.add_paragraph('This is paragraph3.\n').paragraph_format.space_after = Pt(20)
    doc2.add_paragraph('This is paragraph4.\n').paragraph_format.space_before = Pt(20)
    doc2.add_paragraph('This is paragraph5.\n')
    doc2.add_paragraph('This is paragraph6.\n').paragraph_format.line_spacing = 3
    doc2.save('./file_path/testDoc.docx')

def read_doc():
    from docx import Document
    doc3 = Document('./file_path/testDoc.docx')
    for para in doc3.paragraphs:
        print(para.text)
    for table in doc3.tables:
        for row in table.rows:
            for cell in row.cells:
                print(cell.text)

def saveWord2Pdf_doc(wordPath, pdfPath):
    '''
        wordPath: word文件路径
        pdfPath: 生成pdf文件路径
    '''
    # pip install pywin32
    from win32com.client import gencache
    from win32com.client import constants,gencache
    word = gencache.EnsureDispatch('Word.Application')
    doc = word.Documents.Open(wordPath, ReadOnly=1)
    doc.ExportAsFixedFormat(pdfPath, 
                            constants.wdExportFormatPDF,
                            Item = constants.wdExportDocumentWithMarkup,
                            CreateBookmarks = constants.wdExportCreateHeadingBookmarks)
    word.Quit(constants.wdDoNotSaveChanges)

if __name__ == '__main__':
    create_doc()
    addContent_doc()
    setStyle_doc()
    read_doc()
    saveWord2Pdf_doc('./file_path/testDoc.docx', './file_path/testDoc.pdf')
    pass

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值