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

编程入门 行业动态 更新时间:2024-10-26 13:22:25

应用场景:

目录

应用场景:

问题描述1

问题描述2: 

小问题:

需要引入的包 

总结:

  


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

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

问题描述1

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

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

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)

  

更多推荐

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

本文发布于:2023-06-14 01:06:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1420686.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:办公自动化   表格   位置   文档   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!