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

广州海珠建网站/神秘网站

广州海珠建网站,神秘网站,wordpress登录页面url,wordpress火车近日有个小项目,需要对Excel中数据行进行分离,即1.原文件中保留一些过滤掉某些数据行保存为一个新文件,2.原文件中的在上一步中过滤掉数据行也保存为一个新文件。但这些数据行中有的在C列带有图片,有的无图片,这样就给…

近日有个小项目,需要对Excel中数据行进行分离,即1.原文件中保留一些过滤掉某些数据行保存为一个新文件,2.原文件中的在上一步中过滤掉数据行也保存为一个新文件。但这些数据行中有的在C列带有图片,有的无图片,这样就给数据的分离带来了麻烦。

openpyxl是可以通过ws._images获取Excel中的图片的,但只是按文件中图片顺序的引用,无法知晓图片所在单元格信息。在测试中,直接调用ws._images[0].anchor则会报错如下:

>>> ws._images[0].anchor
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "D:\python38\lib\site-packages\openpyxl\descriptors\serialisable.py", line 198, in __repr__
    args.append(u"{0}={1}".format(k, repr(v)))
  File "D:\python38\lib\site-packages\openpyxl\descriptors\serialisable.py", line 198, in __repr__
    args.append(u"{0}={1}".format(k, repr(v)))
  File "D:\python38\lib\site-packages\openpyxl\descriptors\serialisable.py", line 198, in __repr__
    args.append(u"{0}={1}".format(k, repr(v)))
  File "D:\python38\lib\site-packages\openpyxl\descriptors\serialisable.py", line 194, in __repr__
    for k in self.__attrs__ + self.__elements__:
TypeError: can only concatenate tuple (not "list") to tuple

不知道是否是这个库的bug还是没有实现的功能。通过查询网上有关文章,发现xlsx实际是一个zip格式的压缩文件,图片的有关信息是可以通过其中的xml文件获得的。通过获取如下图示中的文件及其内容:

图片中指示处即为图片所在的列和行信息,那么就可以使用zipfile标准库来读取他,之后用正则表达式直接匹配出其所在列和行信息,由于本项目中所有图片均包含在C列,所以使用以下代码来获取所有图片的位置信息:

    fz = zipfile.ZipFile(filename, 'r')xml_name = 'xl/drawings/drawing1.xml'if xml_name in fz.namelist():xml_string = fz.read(xml_name).decode()images_row_numbers = re.findall(r'<xdr:row>(\d+)</xdr:row>', xml_string)if images_row_numbers:res = list(map(int, images_row_numbers))fz.close()res = [r+1 for r in res]

由于要获取行号,此处把每个行数据加上了1。

这样,结合ws._images就可以知道图片的位置信息了。但是文件中抽取一些行后,图片的行信息变化也是比较大的,所以直接用以下代码段先删除文件中所有图片:

    imgs = ws._images[:]for i in range(len(ws._images)-1, -1, -1):del ws._images[i]

再用以下代码段把图片进行缩放后放置在正确的位置:

    for rowNumber, img in enumerate(images_sequences, 3):if img:img.width, img.height = img.width * 0.07, img.height * 0.07ws.add_image(img, anchor='C' + str(rowNumber))

也算完成了预期目标。

--------------------------------------------------更新------------------------------------------

发现xl/drawings/drawing1.xml文件格式不是全部相同的,所以使用带命名空间的xml方式来解析,代码如下:

    import xml.etree.ElementTree as ETfz = zipfile.ZipFile(filename, 'r')xml_name = 'xl/drawings/drawing1.xml'ns = {'i': 'http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing'}if xml_name in fz.namelist():xml_string = fz.read(xml_name).decode()xml = ET.fromstring(xml_string)nodes = xml.findall('.//i:from/i:row', ns)images_row_numbers = [node.text for node in nodes]if images_row_numbers:res = list(map(int, images_row_numbers))fz.close()res = [r+1 for r in res]

 

http://www.jmfq.cn/news/5158819.html

相关文章:

  • 石河子网站建设公司/天津的网络优化公司排名
  • 微信微网站开发教程/网络推广外包
  • 新疆建设厅网站/凡科官网免费制作小程序
  • wordpress主题古风/seo优化网络推广
  • pc网站做app京东/河南做网站优化
  • 合肥学习做网站/手机网站模板
  • 网站建设中主页源码/郑州全域静态管理
  • 青岛城乡建筑设计院有限公司/济南seo优化外包服务公司
  • 风格网站建设/电商平台的营销方式
  • 青岛网站互联网公司/产品优化是什么意思
  • 网站公司优势/app推广是什么工作
  • 新手学做网站电子版/网站优化网站优化
  • 苹果做安卓游戏下载网站/宁波网站推广找哪家公司
  • 北京环评在那个网站上做/竞价培训班
  • 手机网站建设开发/深圳搜索排名优化
  • wordpress浏览器版本/seo关键字排名优化
  • 怎么自己给自己的网站做推广/seo包年优化费用
  • 企业微网站与手机微信/深圳企业黄页网
  • js网站禁止复制/网站关键词优化外包
  • 购物商城网站功能设计/seo网络推广排名
  • 网站架构设计师月薪多少/公司域名注册查询
  • 哈什么网一个网站做ppt/百度官网网站首页
  • 网站 搜索怎么实现/seo网站优化网站编辑招聘
  • 做网站的字体大小/郑州网络营销推广公司
  • ofbiz做的网站/seo优化排名教程
  • 网站设计报价单模板/宣传链接怎么做
  • 简单网站设计模板/电商平台
  • 手机自适应网站/全国人大常委会
  • 做网站如何找项目/web设计一个简单网页
  • 微信微博网站建设/seo优化师培训