Python实现将Word表格嵌入到Excel中
作者:酸菜鱼编程 发布时间:2022-02-10 06:21:49
标签:Python,Word,Excel
今日需求
其实就是把Word中的表格转到Excel中,顺便做一个调整。这个需求在实际工作中,很多人还是经常碰到的!
如果单单是两个表格,那只要简单的复制黏贴即可,但如果上百了呢?那就得考虑自动化了。好在今天碰到的需求中的原文件格式是比较有规律的,那直接来尝试一下。
# 首先要pip install python-docx
# 如果原文件是doc格式,那就先转成docx
from docx import Document
import pandas as pd
path = "./word表格转excel.docx"
docx = Document(path)
table_s = docx.tables # 返回一个Table对象的列表
len(table_s) --> 2 # 返回值是2,因为原文件中只有两个表格
list_ = [] # 初始化一个空列表,用来装后面的dict_
for table in table_s: # 循环所有的表格列表
dict_ = {}
dict_['名称'] = table.cell(0, 1).text # 表格的索引是从(0行,0列)开始
dict_['身份'] = table.cell(0, 3).text
dict_['简介'] = table.cell(1, 1).text
for i in range(3, len(table.rows)): # 后续的内容格式不固定,所以循环获取
dict_[table.cell(i, 0).text] = table.cell(i, 1).text
list_.append(dict_)
当完成上述操作后,list_就会是一个字典列表。
接下来,将列表转为DataFrame进行操作即可。
df = pd.DataFrame(list_)
# 先将前三列作为索引,然后逆透视其他列,其实这就是个一维表转二维表的过程
df = df.set_index(['名称', '身份', '简介']).stack(level=0).to_frame()
# 重新设置一下行列索引的名字
df.index.names = ['名称', '身份', '简介', '物质']
df.columns = ['现状']
此时的df就跟需求结果相差不大了。
最后将DataFrame导出,稍作美化即可完成需求。
# 导出的时候一定要设置index=True不然只会保留一列Series
df.to_excel("data3.xlsx", index=True, merge_cells=True)
完整代码
# 首先要pip install python-docx
# 如果原文件是doc格式,那就先转成docx
from docx import Document
import pandas as pd
path = "./word表格转excel.docx"
docx = Document(path)
table_s = docx.tables # 返回一个Table对象的列表
list_ = [] # 初始化一个空列表,用来装后面的dict_
for table in table_s: # 循环所有的表格列表
dict_ = {}
dict_['名称'] = table.cell(0, 1).text # 表格的索引是从(0行,0列)开始的
dict_['身份'] = table.cell(0, 3).text
dict_['简介'] = table.cell(1, 1).text
for i in range(3, len(table.rows)): # 循环获得后面的内容
dict_[table.cell(i, 0).text] = table.cell(i, 1).text
list_.append(dict_)
df = pd.DataFrame(list_)
# 先将前三列作为索引,然后逆透视其他列,就是个一维表转二维表的过程
df = df.set_index(['名称', '身份', '简介']).stack(level=0).to_frame()
# 重新设置一下行列索引的名字
df.index.names = ['名称', '身份', '简介', '物质']
df.columns = ['现状']
# 导出的时候一定要设置index=True不然只会保留一列Series
df.to_excel("data3.xlsx", index=True, merge_cells=True)
来源:https://blog.csdn.net/pythonxuexi123/article/details/115027653


猜你喜欢
- 躺着赚钱一位匿名知乎网友爆料用Python写了自动化交易程序,2年躺着赚了200万!相当于普通程序员10年的工资,此刻的心情...你懂的!不
- 在过去的几十年里,机器学习对世界产生了巨大的影响,而且它的普及程度似乎在不断增长。最近,越来越多的人已经熟悉了机器学习的子领域,如神经网络,
- 这绝对是最详细的Vue开发工具vuejs-devtools安装教程,相信你只需要5分钟即可解决所有问题vue-devtools是什么?vue
- 本文实例讲述了Python统计分析模块statistics用法。分享给大家供大家参考,具体如下:一 计算平均数函数mean()>>
- AES简介高级加密标准(AES,Advanced Encryption Standard)为最常见的对称加密算法(微信小程序加密传输就是用这
- 本文实例为大家分享了Bootstrap导航条实现的具体代码,供大家参考,具体内容如下navbar-header:导航的头部,一般情况下用来放
- 本文实例讲述了Symfony2框架HTTP Cache用法。分享给大家供大家参考,具体如下:富web应用程序的本质意味着它们的动态。无论你的
- SQL Server的容灾功能一直弱于Oracle和MySQL,无法自动同步元数据(用户、登录名、权限、SQL 代理作业、链接服务器),导致
- 我就废话不多说了,还是直接看代码吧!from IPython.display import display,Latex,Math%matpl
- 本文实例讲述了python计算方程式根的方法。分享给大家供大家参考。具体实现方法如下:''' roots = pol
- MySQL好像从5.0.2版本就开始支持触发器的功能了,本次博客就来介绍一下触发器,首先还是谈下概念性的东西吧:什么是触发器触发器是与表有关
- 1.由于不支持博客首页到文章详情页的跳转,只能打开第一篇文章的详情页2.所以需要做以下工作:设计文章详情页的url,完善视图函数逻辑,实现首
- 01直接生成这类方法是利用基本程序软件包numpy的随机数产生方法来生成各类用于聚类算法数据集合,也是自行制作轮子的生成方法。一、基础类型1
- 本文实例讲述了决策树的python实现方法。分享给大家供大家参考。具体实现方法如下:决策树算法优缺点:优点:计算复杂度不高,输出结果易于理解
- 在使用numpy数组的过程中时常会出现nan或者inf的元素,可能会造成数值计算时的一些错误。这里提供一个numpy库函数的用法,使nan和
- 最近使用pytorch时,需要用到一个预训练好的人脸识别模型提取人脸ID特征,想到很多人都在用用vgg-face,但是vgg-face没有p
- 简介有兴趣可以看看: 解释性语言+动态类型语言+强类型语言交互模式:(主要拿来试验,可以试试 ipython)$python>>
- 一、前言基于Mediapipe+Opencv实现手势检测,想实现一下姿态识别的时候,感觉手势识别也蛮重要的就过来顺便实现一下。下面是一些国内
- 报错信息:Store update, insert, or delete statement affected an unexpected
- Series属性Series属性列表属性说明Series.index系列的索引(轴标签)Series.array系列或索引的数据Series