程序分析

今天文章介绍一个实战案例,与自动化办公相关;案例思想是源于前两天帮读者做了一个 demo ,需求大致将一上百个 word 中表格内容提取出来(所有word 中表格样式一样),把提取到的内容自动存入 Excel 中。
原文地址 作者:zeroing

程序源码

from win32com import client as wc
import os
import pandas as pd
import docxpath="C:\\Users\Lenovo\PycharmProjects\infoexarct\\table\\" #设置文件的目录def doc_to_docx(path):path_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')wordlist_path=[]print("正在读取文件目录....")for doc_path in doc_list:doxc_path_save=doc_path.replace(path,"C:\\Users\Lenovo\PycharmProjects\infoexarct\\table\\temp\\")save_path = str(doxc_path_save).replace('doc','docx')doc = word.Documents.Open(doc_path)doc.SaveAs(save_path,12, False, "", True, "", False, False, False, False)doc.Close()wordlist_path.append(save_path)print('{} Save sucessfully '.format(save_path))word.Quit()print("文件转换已完成,开始分析文件....")return wordlist_pathdef GetData_frompath(save_path):document = docx.Document(save_path)col_keys = [] # 获取列名col_values = [] # 获取列值index_num = 0for table in document.tables:for row_index,row in enumerate(table.rows):for col_index,cell in enumerate(row.cells):if (col_index==4 and row_index<7) :continue# print(' pos index is ({},{})'.format(row_index, col_index))# print('cell text is {}'.format(cell.text))if row_index<7:if index_num % 2==0:col_keys.append(cell.text)else:col_values.append(cell.text)fore_str = cell.textindex_num +=1else:if col_index >0 :breakelse:if index_num % 2 == 0:col_keys.append(cell.text)else:col_values.append(cell.text)fore_str = cell.textindex_num += 1col_keys.pop(3)col_values.pop(3)col_values[11] = '\t' + col_values[11]# print(f'col keys is {col_keys}')# print(f'col values is {col_values}')return  col_keys,col_valuesdef create_csv(wordlist_path):pd_data = []for index,single_path in enumerate(wordlist_path):col_names,col_values = GetData_frompath(single_path)print(f"已录入{index+1}名学生信息")if index == 0:pd_data.append(col_names)pd_data.append(col_values)else:pd_data.append(col_values)df = pd.DataFrame(pd_data)#csv_path="C:\\Users\Lenovo\PycharmProjects\infoexarct\\finsh.csv"# df.to_csv(csv_path, encoding='utf_8_sig',index=False,header=None)df.to_excel('data.xlsx', sheet_name='工作表1',index=False,header=None)print("程序执行结束.....")wordlist_path=doc_to_docx(path)create_csv(wordlist_path)

常见错误

from win32com import client as wc
word = wc.Dispatch(‘Word.Application’)

安装包 pip install pypiwin32
如果报错 DLL load failed while importing win32api:找不到指定的模块

那么我们可以找到自己安装的环境的脚本目录 ,一般在python安装环境的

运行一下命令 python pywin32_postinstall.py -install 就安装完成了
安装处理docx的包
pip install docx

报错 from exceptions import PendingDeprecationWarning
ModuleNotFoundError: No module named ‘exceptions’

python3.x版本移除了exceptions模块,但是docx包中引用了该模块

安装最新版python-docx模块即可
#1 pip install python-docx安装问题解决

modulenotfounderror: no module named 'xlwt’解决方案 python padans 输出excel出错

python提取word表格中数据相关推荐

  1. java读取word表格中的数据_JAVA获取word表格中数据的方案

    上一个项目的开发中需要实现从word中读取表格数据的功能,在JAVA社区搜索了很多资料,终于找到了两个相对最佳的方案,因为也得到了不少网友们的帮助,所以不敢独自享用,在此做一个分享. 两个方案分别是: ...

  2. Python提取Word文件中的目录标题保存为Excel文件

    from docx import Document from openpyxl import Workbook from openpyxl.styles import Alignment, Borde ...

  3. 计算机word表格计算教程F9,计算word表格中数据的教程

    计算word表格中数据的教程 为了方便用户使用表格中的数据计算,Word对表格的单元格进行了编号,每个单元格都有一个惟一编号.编号的原则是:表格最上方一行的行号为1,向下依次为2,3,4,-表格最左一 ...

  4. python提取word表格里的内容_python读取word表格 python中如何将word表格内的内容进行替换...

    python如何获取word文件中某个关键字之后的表格一片春愁待酒浇.江上舟摇,楼上帘招.秋娘度与泰娘娇.风又飘飘,雨又萧萧.何日归家洗客袍?银字笙调,心字香烧.流光容易把人抛.红了樱桃,绿了芭蕉. ...

  5. 【Python】Python提取word表格,并保存在excel中

    需求:一些常用的对word的操作和提取word的表格,并保存在excel中 pip install python-docx from docx import Document from openpyx ...

  6. [Python] 提取Excel表格中的数据——某列数据、转拼音等

    import xlrd import re filepath = r'(这里填Excel表的文件位置)'# 提取Excel表中的信息(下列数据根据不同的Excel表的数据进行更改) data=xlrd ...

  7. python提取word文件中的图片,并上传阿里云OSS,返回html图片标签

    该需求是一个真实的实战需求,如果你的公司在做题库类的系统,一定会涉及该方面的内容,所以收藏起来吧. 需求简单描述如下所示: 提取 Word(为了便于解决,统一格式为 docx)中的题干/选项图片: 将 ...

  8. python提取word所有表格_用Python提取 Word 表格内容

    一个公司有若干个部门,一个部门有若干个员工,每一个员工填写一份自己的信息(Word 版),然后录入系统,Word 表格模板如下: 填入内容如: 首先我们需要做的就是把数据提取出来,之后我们就可以对数据 ...

  9. python删除word表格中的某一行_python docx删除word段落

    使用python-docx编辑一个docx文档时, 对添加的方法使用很多, 但有时候也会用到删除和修改 python-docx中并没有提供delete()方法, github上给出了解决方法: htt ...

最新文章

  1. AngularJS 国际化——Angular-translate
  2. 密码学-hash加密
  3. android之uses-permission
  4. 容器打印日志到控制台阻塞的排障
  5. 教育|我在美国读博士才发现,美国高等教育如此残酷,以前的感觉完全是扯淡...
  6. chrome 设置user agent
  7. ObjC学习4-多态、动态类型、动态绑定及异常处理
  8. 程序员到CTO需要准备什么
  9. 实训作业 4(界面2)
  10. angular学习资源
  11. win2003 ent 64 + mssql ent 64
  12. 用于解决SQL2014安装时出现需要更新vs2010的问题
  13. 华医网自动答题小脚本软件,并收集答案保存起来
  14. K8S 还没用,K9S 又是什么鬼?
  15. POS系统example.launch 的位置_关于信用卡用户使用个人POS机的建议!
  16. 【上电即上华为云】华为云openCPU智联模组_wifi_HF-LPX70_RISC-V_CoAP
  17. 帝国CMS仿3500游戏源码大气H5游戏门户网站模板源码
  18. linux操作系统——linux删除个人账户密码
  19. vue项目 element表格数据行转列数据互转
  20. 为什么编程入门很多人都会推荐Java?

热门文章

  1. flutter播放上一首和下一首,自动播放下一首
  2. mini6410中断控制器-VIC中断控制器
  3. bzoj4627[BeiJing2016]回转寿司
  4. EM算法(1)—— 彻底理解EM算法推导
  5. python中enumerate()函数
  6. 反掩码的作用是什么?通配符掩码的作用是什么?—Vecloud
  7. 七个人生工具 | SWOT、PDCA、6W2H、SMART、WBS、时间管理、二八原则
  8. 内存映射mmap函数的理解
  9. 58同城姚劲波:以域名起家 从创业小子到亿万富翁
  10. 项目实训(八) —— HTML弹窗