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

# -*- 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,可以参考下面的代码

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()
网友评论