zoukankan      html  css  js  c++  java
  • 使用python操作word

    有两种方式:

    • 使用win32com
    • 使用docx

    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

    参考文档: https://python-docx.readthedocs.io/en/latest/index.html

    代码:

    import docx
    
    def read_docx(file_name):
        doc = docx.Document(file_name)
        content = '
    '.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-8
    import docx
    
    doc = docx.Document('tmp.docx')
    for table in doc.tables:  # 遍历所有表格
        print '----table------'
        for row in table.rows:  # 遍历表格的所有行
            # row_str = '	'.join([cell.text for cell in row.cells])  # 一行数据
            # print row_str
            for cell in row.cells:
                print cell.text, '	',
            print

     相关样式参考: https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html

  • 相关阅读:
    Magento速度优化
    magento-connect-manage出现404或者500内部错误的解决办法
    magento -- 给后台分类管理页的分类商品加一栏商品类型
    magento -- 添加新产品时状态默认为激活,库存状态默认为有库存
    magento -- 如何为商品分类(category)添加自定义属性
    magento -- 如何改善前台图片质量
    安装Let's Encrypt SSL证书
    centos版本查看
    ps
    设置桥接虚拟网卡
  • 原文地址:https://www.cnblogs.com/hupeng1234/p/6920129.html
Copyright © 2011-2022 走看看