需求: 提取excel中嵌入单元格的图片
实现思路: 用pandas读取文件,对于嵌入图片的单元格则会显示其函数
问题:wps与office嵌入方法有所不同,wps使用函数嵌套,而office则是设置随单元格大小变动,对于后者,会被视为是悬浮的图片,使用pandas无法提取任何一张图片
源文件如下:
该文件是用office处理的
B2为一张没有嵌套函数、随单元格大小变化的嵌入式图片,其他为公式嵌套的图片
直接用pandas对比wps和office,可以发现office处理的文件,无法提取到图片
- 转化读取方式
对于xls,设置引擎为xlrd即可提取
对于xlsx,使用openpy读取再转换成df
此时还有B2提取不到,所以还需要判断悬浮式图片的起始位置和结束为止在同一个单元格里。再替换b2的值
可以通过openpyxl或解析解压的文件提取
整体思路为:
graph TBA(excel文件)--->B(xlsx文件)
A(excel文件)--->C(xls文件)B-->B1(openpyxl)
B1-->B2(unzip)
B2-->B3(cellImage mapping)
B2-->B4(drawing mapping)
B1(openpyxl)-->b1(ws._images)
C-->C1(pandas+engine xlrd)
C1-->B2(unzip)