python 实现doc docx xlsx互转

可实现:
doc 转 docx
docx 转 doc
docx 转xlsx
xlsx转docx

from random import choice
from docx import Document
from docx. enum.style import WD_STYLE_TYPE
from openpyxl import load_workbook
from openpyxl import Workbook
from win32com import client
import os

#转换doc为docx
def doc2docx(fn):
    word = client.Dispatch("Word.Application") # 打开word应用程序
    #for file in files:
    doc = word.Documents.Open(fn) #打开word文件
    doc.SaveAs("{}x".format(fn), 12)#另存为后缀为".docx"的文件,其中参数12或16指docx文件
    doc.Close() #关闭原来word文件
    word.Quit()
    return

#转换docx为doc
def docx2doc(fn):
    word = client.Dispatch("Word.Application") # 打开word应用程序
    #for file in files:
    doc = word.Documents.Open(fn) #打开word文件
    doc.SaveAs("{}".format(fn[:-1]), 0)#另存为后缀为".docx"的文件,其中参数0指doc
    doc.Close() #关闭原来word文件
    word.Quit()
    return


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(table_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')

def docx2xlsx(fn):
    document = Document(fn)
    #需要从openpyx1模块中导入一下
    wb = Workbook()
    wb.remove(wb.worksheets[0])
    for index, table in enumerate(document.tables,start=1):
        ws = wb.create_sheet('sheet{}'.format(index))
        for row in table.rows :
            values = list(map(lambda cell:cell.text,row.cells))
            ws.append(values)
    wb.save(fn[:-5]+'_new.xlsx') 
    
def get_doc(path):
    doclists=[]
    for file in os.listdir(path):
        filename=os.path.join(path,file)
        if os.path.isfile(filename):             #是目录
            # print(os.path.splitext(os.path.basename(filename))[0],
            # os.path.splitext(os.path.basename(filename))[0]!="汇总表")  #剔除个别
            if filename.endswith(".doc"):
                doclists.append(filename)
    return doclists

def get_path():
    path=input('输入整理前原始路径:  ')
    if path=="":
        path=os.getcwd()
    return path

def main(path):
    doclists=get_doc(path)
    for doclist in doclists:
        print('转换 %s 。。。。。。。' %doclist)
        doc2docx(doclist)
        docx2xlsx(doclist+"x")



if __name__ == '__main__':
    path=get_path()
    main(path)
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值