1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 批量复制提取Word中所有的表格到Excel(Python办公自动化)

批量复制提取Word中所有的表格到Excel(Python办公自动化)

时间:2020-11-05 11:53:09

相关推荐

批量复制提取Word中所有的表格到Excel(Python办公自动化)

import docximport osfrom win32com import client as wcimport pandas as pdword_paths = os.getcwd()# doc 转化为 docx,如果不用该方法则打不开对应的docxdef convertdoc_docx(path):#将path下所有的doc转换为有效的docxpath_list = os.listdir(path)doc_list = [os.path.join(path, str(i))for i in path_list if str(i).endswith('doc')]word = wc.Dispatch('Word.Application')for path in doc_list:print(path)save_path = str(path).replace('doc', 'docx')doc = word.Documents.Open(path)doc.SaveAs(save_path, 12, False, "", True,"", False, False, False, False)doc.Close()print('{} Save sucessfully '.format(save_path))word.Quit()def docx2dataframe(filepath) -> pd.DataFrame:# 将一个docx的文件路径传入,发挥一个Dataframe,便于导出doc = docx.Document(filepath)# print(len(doc.tables)) # 检查表格数量是否在一个合理范围for index, table in enumerate(doc.tables):df = [['' for i in range(len(table.columns))]for j in range(len(table.rows))]try:for i, row in enumerate(table.rows):for j, cell in enumerate(row.cells):if cell.text:df[i][j] = cell.textreturn pd.DataFrame(df)except:pass # 出错的是少量,手动添加即可if __name__ == "__main__":convertdoc_docx(word_paths) # 这个函数调用将当前文件夹下所有的doc文件转为docxexcel_writer = pd.ExcelWriter('target.xlsx') # 创建目标excel文件docx_list = [os.path.join(word_paths, i) for i in os.listdir(word_paths) if str(i).endswith('.docx')] # docx文件路径列表for index, docx_file in enumerate(docx_list):docx2dataframe(docx_file).to_excel(excel_writer=excel_writer, sheet_name=f'sheet{index}', index=False)excel_writer.save() # 每次读完保存一下print('\r' + str(index), end='') # 查看进度excel_writer.close()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。