当前位置: 首页 > news >正文

青浦营销型网站建设宜春网站建设哪家专业

青浦营销型网站建设,宜春网站建设哪家专业,网站开发界面图标设计,建筑电气与智能化1 发现问题 我的excel中有浮动图片和嵌入式图片#xff0c;但是openpyxl的_image对象只提取到了浮动图片#xff0c;通过阅读其源码发现#xff0c;这是因为openpyxl只解析了drawing文件导致的#xff0c;所以确定需要自己解析 2 解决思路 1、解析出media资源 2、解析…1  发现问题 我的excel中有浮动图片和嵌入式图片但是openpyxl的_image对象只提取到了浮动图片通过阅读其源码发现这是因为openpyxl只解析了drawing文件导致的所以确定需要自己解析 2  解决思路 1、解析出media资源 2、解析出xml这可以得到资源的rNvpr-rId-image target的关系 3、从xlrd或openpyxl中得到单元格cNvpr定位到图片 3  解析xlsx 先把xlsx解压出来得到的文件如下其中xl文件夹是我们需要的 我分析了里面的所有文件发现这两个文件存储了嵌入式图片的关键信息 xl/cellimages.xmlxl/_rels/cellimages.xml 打开这两个文件看看到底存储了什么 3.1  xl/cellimages.xml 有效信息在cellImage对象中 cellImage.pic.nvPicPr.cNvPr.name记录了函数名cellImage.pic.blipFill.blip.embed记录了rId 记录这个关系并建立映射关系 { ID_xxx: rId } 3.2  xl/_rels/cellimages.xml 有效信息在Relationship对象中 Relationship.id文件rIdRelationship.target图片地址 建立这个映射关系 { rId: target } 到这一步我们已经可以从函数名定位到图片资源了剩下一步建立excel单元格和图片的关系接下来解析excel文件 { ID_xxx: rId }  { rId: target }  ID_xxx - target 4  代码实现 接下来简单的代码实现有问题可以评论区留言看到会回复 此实现基于openpyxl from xml.etree.ElementTree import fromstring from io import BytesIO from zipfile import ZipFilefrom openpyxl import load_workbook from openpyxl.packaging.relationship import get_rels_path, get_dependents from openpyxl.xml.constants import SHEET_DRAWING_NS, REL_NS, IMAGE_NS from openpyxl.drawing.image import Image, PILImagedef parse_element(element):将XML解析为 {ID_XXX: rId}:param element:etc:cellImagexdr:picxdr:nvPicPrxdr:cNvPr id2 nameID_CBD7CEBC94B44923A5B447F3F21C1995 descrupload_post_object_v2_167528160/xdr:cNvPicPr//xdr:nvPicPrxdr:blipFilla:blip r:embedrId1/a:stretcha:fillRect//a:stretch/xdr:blipFillxdr:spPra:xfrma:off x0 y0/a:ext cx9144000 cy4796155//a:xfrma:prstGeom prstrecta:avLst//a:prstGeom/xdr:spPr/xdr:pic/etc:cellImage:return:data {}xdr_namespace {%s} % SHEET_DRAWING_NStargets level_order_traversal(element, xdr_namespace nvPicPr)for target in targets:# 是一个cellimagecNvPr embed for child in target:if child.tag xdr_namespace nvPicPr:cNvPr child[0].attrib[name]elif child.tag xdr_namespace blipFill:_rel_embed {%s}embed % REL_NSembed child[0].attrib[_rel_embed]if cNvPr:data[cNvPr] embedreturn datadef level_order_traversal(root, flag):层次遍历查找目标节点queue [root]targets []while queue:node queue.pop(0)children [child.tag for child in node]if flag in children:targets.append(node)continuefor child in node:queue.append(child)return targetsdef handle_images(deps, archive) - []:将图片二进制内容封装为Image对象images []if not PILImage: # Pillow not installed, drop imagesreturn imagesfor dep in deps:if dep.Type ! IMAGE_NS:msg {0} image format is not supported so the image is being dropped.format(dep.Type)print(msg)continuetry:image_io archive.read(dep.target)image Image(BytesIO(image_io))except OSError:msg The image {0} will be removed because it cannot be read.format(dep.target)print(msg)continueif image.format.upper() WMF: # cannot savemsg {0} image format is not supported so the image is being dropped.format(image.format)print(msg)continueimage.embed dep.id # 文件rIdimage.target dep.target # 文件地址images.append(image)return imagesdef main():CELLIMAGE_PATH xl/cellimages.xmlPARSE_FILE_PATH C:/Users/user/Downloads/TCI验收问题.xlsxarchive ZipFile(PARSE_FILE_PATH, r)wb load_workbook(PARSE_FILE_PATH)src archive.read(CELLIMAGE_PATH) # 打开cellImage.xml文件deps get_dependents(archive, get_rels_path(CELLIMAGE_PATH)) # 解析cellImage.xml._rel文件image_rels handle_images(depsdeps.Relationship, archivearchive)node fromstring(src)cellimages_xml parse_element(node)cellimages_rel {}for image in image_rels:cellimages_rel[image.embed] imagefor cnvpr, embed in cellimages_xml.items():cellimages_xml[cnvpr] cellimages_rel.get(embed)# df pd.read_excel(PARSE_FILE_PATH)# df[行号] df.index 2# image_mappings ParserXLSXEmbed(wbwb, dfdf).extract_images(start_frommax(0, 1) 1)# image_mappings.update(cellimages_xml)archive.close() # 关闭压缩文件对象防止内存泄漏print(cellimages_xml)if __name__ __main__:main()
http://www.zqtcl.cn/news/3304/

相关文章:

  • 网站后台上传文章怎么做可以网上做单的网站有哪些
  • 高校二级学院网站建设管理制度网站的不同类
  • 建站工具 ip济南网页设计培训
  • 制作一个网站的全过程企业网站 制作
  • 网站建设优化推广杭州企业网站优化问题
  • 视频点播网站开发建筑公司企业标语
  • 网站做m版外贸网站建设服务器
  • 电商型网站是否是趋势网站文章不收录怎么办
  • 百度网站优化大华建设项目管理有限公司网站
  • 广东省住房及建设厅官方网站怎么在工商局网站做注销
  • 网站建设代理平台wordpress分类数据库参数
  • 佛山网站建设企业积极参与网站信息建设工作
  • 建站好的公司我的页面设计
  • 长沙哪里做网站价格便宜怎么做网站框架
  • 印刷报价网站源码架设网站费用
  • 手机wap网站源码换网站后台
  • 中企动力建设网站长沙网站制作有哪些公司
  • 为什么我做的网站不是加密访问梓潼县住房和城乡建设局网站
  • 搭建自己的网站需要什么网站排名怎么做上去
  • 莱州建设局网站北京动力 网站建设
  • 常用网站开发技术哪个不是网站开发工具
  • 嘉鱼网站建设前十温州建设局官方网站
  • 免费发布招工郑州网站优化推广培训
  • 网站地图 百度茶网站建设实训报告
  • 长沙企业网站建设品牌书店网站建设技术风险
  • 公众号网站建设专业网页制作培训机构
  • 公司用dw做网站吗江西省水文监测中心
  • 代运营怎么找客户官网推广方案seo
  • 网站服务器失去响应什么意思做网站干什么用
  • 百度网站流量查询白菜博主的返利网站怎么做