美文网首页
python:EXCEL 批量复制到word

python:EXCEL 批量复制到word

作者: 萝卜头科技 | 来源:发表于2020-05-08 13:13 被阅读0次

1、表格和word相互复制:表格 纯二维
如果一个excel中有多个SHEET,且是纯二维表格,那么批量复制到WORD,python 代码如下:


表.jpg
# -*- coding:UTF-8 -*-
from random import choice
from docx import Document
from docx.enum.style import WD_STYLE_TYPE
from openpyxl import load_workbook

def xlsx2docx(fn):
    #打开excel文件,如有公式,读取公式计算结果
    wb=load_workbook(fn,data_only=True)
    #创建空白word 文件
    document=Document()

    #查看所有可用的表格样式
    table_styles=[style for style in document.styles 
                if style.type==WD_STYLE_TYPE.TABLE]
    #print(talbe_styles)

    #遍历EXCEL 文件中所有的worksheet
    for ws in wb.worksheets:
        rows=list(ws.rows)
        #增加段落,也就是表格的名称
        document.add_paragraph(ws.title)
        #根据worKsheet的行数和列数,在word 文件中创建核实大小的表格
        table=document.add_table(rows=len(rows),
                                cols=len(rows[0]),
                                style=choice(table_styles))
        #从worksheet读取数据,写入word文件中的表格
        for  irow,row in enumerate(rows):
            for icol,col in enumerate(row):
                table.cell(irow,icol).text=str(col.value)
    #保存word文件
    document.save(fn[:-4]+'docx')
#调用函数,进行数据导入
xlsx2docx('C:/Users/songym2/Desktop/python/分析测试.xlsx')

注意:以上方法,如表格有空值,他会用NOON填充
如果把Word文件中的表格批量导出到Excel文件中,每个表格占用一个worksheet,可以参考下面的代码


word.jpg

2、复制指定区域的的表格到WORD

import os
import win32com
from win32com.client import constants as c  # 旨在直接使用VBA常数

from random import choice
from docx import Document
from docx.enum.style import WD_STYLE_TYPE
from openpyxl import load_workbook

import time
from win32com import client

word = client.Dispatch('Word.Application')
 #创建空白word 文件
document=Document()


current_address = os.path.abspath('.')

excel_address = os.path.join(current_address, "C:/Users/songym2/Desktop/python/测试文件.xlsx")
xl_app = win32com.client.gencache.EnsureDispatch("Excel.Application")  # 若想引用常数的话使用此法调用Excel
xl_app.Visible = True  # 是否显示Excel文件
wb = xl_app.Workbooks.Open(excel_address)
sht_old = wb.Worksheets("原")
sht_new_1 = wb.Worksheets("复制1")
sht_new_2 = wb.Worksheets("复制2")
sht_new_3 = wb.Worksheets("复制3")

# 复制工作表
rng_data = sht_old.Range(sht_old.Cells(7, 1), sht_old.Cells(8, "C"))  #复制A7:C8数据
rng_data.Copy()

#增加段落,也就是表格的名称
#document.add_paragraph(ws.title)
word.Selection.PasteExcelTable(False, True, False)    #用VBA方法粘贴

#下面是表格见复制,如只是WORD,可不要。增加段落,也就是表格的名称
sht_new_1.Paste(Destination=sht_new_1.Range("A1"))  #方法1:表格全复制
sht_new_2.Range("C5").PasteSpecial(Paste=c.xlPasteValues)  #方法2:表格只复制数据
sht_new_3.Range("A1").PasteSpecial(Paste=c.xlPasteAll)  #方法3:表格全复制

document.save('C:/Users/songym2/Desktop/python/测试.docx')
wb.Save()
wb.Close()
xl_app.Quit()

相关文章

网友评论

      本文标题:python:EXCEL 批量复制到word

      本文链接:https://www.haomeiwen.com/subject/pzbxnhtx.html