• 技术文章 >常见问题 >Python常见问题

    python怎么调用word?

     Ly Ly2020-05-21 13:17:49原创3405

    使用python操作word

    有两种方式:

    1.使用win32com扩展包

    只对windows平台有效

    代码:

    # coding=utf-8
    import win32com
    from win32com.client import Dispatch, DispatchEx
    word = Dispatch('Word.Application')  # 打开word应用程序
    # word = DispatchEx('Word.Application') #启动独立的进程
    word.Visible = 0  # 后台运行,不显示
    word.DisplayAlerts = 0  # 不警告
    path = 'G:/WorkSpace/Python/tmp/test.docx'  # word文件路径
    doc = word.Documents.Open(FileName=path, Encoding='gbk')
    # content = doc.Range(doc.Content.Start, doc.Content.End)
    # content = doc.Range()
    print '----------------'
    print '段落数: ', doc.Paragraphs.count
    # 利用下标遍历段落
    for i in range(len(doc.Paragraphs)):
        para = doc.Paragraphs[i]
        print para.Range.text
    print '-------------------------'
    # 直接遍历段落
    for para in doc.paragraphs:
        print para.Range.text
        # print para  #只能用于文档内容全英文的情况
    doc.Close()  # 关闭word文档
    # word.Quit  #关闭word程序

    2.使用docx扩展包

    优点:不依赖操作系统,跨平台

    安装:

    pip install python-docx

    代码:

    import docxdef read_docx(file_name):
        doc = docx.Document(file_name)
        content = '\n'.join([para.text for para in doc.paragraphs])  
        return content

    创建表格

    # coding=utf-8
    import docx
    doc = docx.Document()
    table = doc.add_table(rows=1, cols=3, style='Table Grid') #创建带边框的表格
    hdr_cells = table.rows[0].cells  # 获取第0行所有所有单元格
    hdr_cells[0].text = 'Name'
    hdr_cells[1].text = 'Id'
    hdr_cells[2].text = 'Desc'
    
    # 添加三行数据
    data_lines = 3
    for i in range(data_lines):
        cells = table.add_row().cells
        cells[0].text = 'Name%s' % i
        cells[1].text = 'Id%s' % i
        cells[2].text = 'Desc%s' % i
    rows = 2
    cols = 4
    table = doc.add_table(rows=rows, cols=cols)
    val = 1
    for i in range(rows):
        cells = table.rows[i].cells
        for j in range(cols):
            cells[j].text = str(val * 10)
            val += 1
    doc.save('tmp.docx')

    读取表格

    # coding=utf-8import docx
    doc = docx.Document('tmp.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 in row.cells:         
               print cell.text, '\t',        
            print
    专题推荐:python
    上一篇:python如何做exe程序? 下一篇:python如何关闭文件?

    相关文章推荐

    • python怎么把xls文件导入?• Python中的ord()函数怎么使用?• python时间戳是啥意思?• python怎么判断是否为纯字母?• Python中的字典遍历有序吗?• python如何操作剪切板?

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网