可实现:
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)