栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python办公自动化---将excel表格插入到doc文档指定位置

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python办公自动化---将excel表格插入到doc文档指定位置

应用场景:

目录

应用场景:

问题描述1

问题描述2: 

小问题:

需要引入的包 

总结:

  


要求将excel中的表格插入到word文档中

  1. 将doc格式转为docx
  2. 将表格插入文档
  3. 如有需要可以将docx文档转回doc,方法与1相似

问题描述1

由于python不能直接对doc格式的word进行操作,需要提前将doc文档另存为docx

注:里面的路径和绝对路径如path和newPath均为绝对路径

def docToDocx(path):
    word = Dispatch('Word.Application')
    # 后台运行不显示
    word.Visible = 0
    # 不警告
    word.DisplayAlerts = 0
    doc = word.Documents.Open(FileName=path, Encoding='gbk')
    # 必须绝对路径,保持和doc路径一致
    newPath = os.path.splitext(path)[0] + '.docx'
    # 暂停3秒,否则会报错   -2147352567
    time.sleep(3)
    doc.SaveAs(newPath, 12, False, "", True, "", False, False, False, False)
    # 开启会删除原来的doc文档
    # doc.Close()
    # 退出
    word.Quit()
    time.sleep(2)
    # print('doc文档已另存为docx文档')
    return newPath

问题描述2: 

将excel表格插入到word文档指定位置,需要在word指定位置实现编写表名,以便检索

excel中也可能存在多个sheet

# 将excel中的表格存放在word文档指定位置
def xlsxToDoc(docxPath, excelPath):
    # 打开excel文件
    # data_only=True---避免出现公式,直接给出计算结果
    excel = load_workbook(excelPath, data_only=True)
    # 打开word文档
    word = Document(docxPath)
    print('打开文档')
    
    # 遍历excel文件中所有的worksheets
    for sheet in excel.worksheets:
        rows = list(sheet.rows)
        # 遍历word文档的段落,并找到标题
        for paragraph in word.paragraphs:
            if sheet.title in paragraph.text:              
                table = word.add_table(rows=len(rows),
                                       cols=len(rows[0]),
                                       style='Table Grid',
                                       )  
                # 从表单中读取数据,写入word中的表格
                for irow, row in enumerate(rows):
                    for icol, col in enumerate(row):
                        # print(col.value)
                        # 判断是因为会出现丢失精度,原因未知
                        if isinstance(col.value, float):
                            table.cell(irow, icol).text = str(round(col.value, 2))
                        elif col.value is None:
                            table.cell(irow, icol).text = ''
                        else:
                            table.cell(irow, icol).text = str(col.value)

                # 把添加的table移动到指定的位置
                move_table_after(table, paragraph)

    # 保存word文件
    word.save(docxPath[:-4] + 'docx')
    print('已将表格插入到文档当中')

# ---------------------------------------------------------------------------------------# 表默认会添加在文档尾部,需要定义函数将其移动到指定位置
def move_table_after(table, paragraph):
    tbl, p = table._tbl, paragraph._p
    p.addnext(tbl)




小问题:
若需要在转回doc文档时,删掉docx文档,需在转换方法最后添加代码
os.remove(path)

 

需要引入的包 

 

总结:
if __name__ == '__main__':
    # path = input('请输入word文档的绝对路径: ')
    # excelPath = input('请输入excel文档的绝对路径: ')

    # D:pythonProject文档.doc
    path = 'D:pythonProject文档.doc'
    # D:pythonProject表格.xlsx
    excelPath = 'D:pythonProject表格.xlsx'

    docxPath = docToDocx(path)
    xlsxToDoc(docxPath, excelPath)
    docxToDoc(docxPath)

  

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1030920.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号