前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Excel催化剂自定义函数支持带命名空间xml文件元素提取

Excel催化剂自定义函数支持带命名空间xml文件元素提取

作者头像
Excel催化剂
发布2021-08-18 11:00:41
1K0
发布2021-08-18 11:00:41
举报
文章被收录于专栏:Excel催化剂

在过去网页采集功能开发过程中,已经推出一组针对网页元素的提取函数,将网页采集常见的json文件和html文件进行指定元素内容的提取。可满足绝大部分场景使用。 在html文件提取中,其实用的是xml提取技术,使用xpath语法去提取指定内容(也扩展了能够使用CSS的selector方式来提取)。但html毕竟仅仅是xml文件子集,对真正的xml文件的提取,仍然缺少对带命名空间的xml文件提取未能囊括。 本篇再次进行更新,将其补全,在大众数据领域,没有Excel催化剂不可及的地方,欢迎大家更多参与,有好的数据需求,多多提出。

带命名空间xml文件提取使用场景

xml是一种伟大的数据格式标准,虽然现在网页开发中,已大量使用json作为数据交互媒介,但xml比json更为强大,覆盖的领域比json更广,也因为曾经流行过,仍然有大量历史工具、程序使用其进行数据交互特别是配置文件的数据存储。

如果未能按xml结构化的提取方式,从其中提取自己需要的数据,而简单粗爆地使用文本字符串处理技术例如正则表达式提取,实属一大遗憾,毕竟现成的结构化不使用,而使用更麻烦的字符提取,得不偿失,工作量俱增且提取准确性得不到保障。

本次触发此功能的实际场景是,需要对Excel的颜色主题文件进行颜色代码的提取,源于EasyShu社群里有位群友发起的讨论,觉得EasyShu的自带的经济学人的主题颜色红色值有偏差,和经济学人不符(经确认其实没有真正的对错,毕竟经济学人的配色是大家自行总结的,非官方公布的。可能不同人采集的样本有些不一,两种红色均有使用过)

最后笔者建议用户自行去修改EasyShu的颜色主题文件,即本篇的主角带命名空间的xml文件。

文件格式如下:

我们观察到每个节点前都有个a:这样的标识,如<a:srgbClr val="B9D1DD"/>

此时要提取到颜色属性值,写xpath时,就需要带上命名空间a(此处的a是命名空间的昵称缩写),如//a:srgbClr

有了PowerQuery后,还需要再开发xml提取功能吗?

社区里经常不时有人提问,有了PowerBI后,是否就可以不用学XXX之类的问题,诚然,PowerBI的PowerQuery组件确实强大,专业用于对数据进行ETL操作,但每个工具都有其适用的范围,有时也更是杀鸡不用牛刀,动不动把它拉出来,其实没必要,就如上述的提取颜色代码场景,非要用PowerQuery的读取xml文件功能,也是可行。

重点是:PowerQuery无论是xml还是json,都无法使用xpath或jsonPath这种语法去提取,只能自己一层层地展开,非常不灵活,就如处理字符串时没有正则表达式可用,只能用几个简单的字符函数一样难受。

下图中在PowerQuery上界面操作展开xml结构和对应的高级编辑器内容,非常繁琐,一个个节点去展开。

大好的消息是Excel催化剂大量的功能在PowerQuery之上更为好用易用,例如接下来介绍到的自定义函数提取带命名空间的xml文件。千万不要钻牛角尖以为Excel或官方的功能才值得学,而且苦苦地学下来,有大量场景其实性价比并不高。

Excel催化剂自定义函数解决方案

接上述所说到的,本次的提取带命名空间的xml文件自定义函数,放到过往的网页采集函数组中,形成功能连贯性,虽然不完全针对网页采集使用。

老规矩,强烈建议从搜索功能入手去找到对应的函数。下图中关于网页采集的函数非常全面丰富

当然在Excel的函数向导里也可以看到相关的函数。

一个函数,轻松获取到最终的元素内容一次性返回,甚至可以提取文件的内容,不仅限于Excel单元格内的字符内容。

如何获取自定义函数

Excel催化剂的自定义函数与插件主体分离,可以只使用自定义函数,不安装Excel催化剂插件,反之如果安装了Excel催化剂,也不能立即有自定义函数功能,需要在【手动更新自定义函数】处进行下载,有新版本发布时,也需要手动点击【更新自定义函数】进行替换更新。

自定义函数的下载地址仍然提供给大家,方便某些电脑不能安装Excel催化剂插件的人使用,只需下载到自定义函数,根据自己Excel的位数不同选择32位xll还是64位xll,双击即可打开,绿色免安装。

如果想每次打开Excel都自动加载,可以将文件丢到插件文件夹路径下(C:\Users\Administrator\AppData\Roaming\Microsoft\AddIns\ 不同用户名将Administrator替换为自己用户名即可)。

让Excel加载时检测到或手动在加载项清单上进行【浏览】选择操作,选择电脑上存放的xll文件,特别是电脑上安装了64位Excel和32位WPS时,文件不放到插件文件夹内,WPS不自动加载就不会报错。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Excel催化剂 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 带命名空间xml文件提取使用场景
  • 有了PowerQuery后,还需要再开发xml提取功能吗?
  • Excel催化剂自定义函数解决方案
  • 如何获取自定义函数
相关产品与服务
数据保险箱
数据保险箱(Cloud Data Coffer Service,CDCS)为您提供更高安全系数的企业核心数据存储服务。您可以通过自定义过期天数的方法删除数据,避免误删带来的损害,还可以将数据跨地域存储,防止一些不可抗因素导致的数据丢失。数据保险箱支持通过控制台、API 等多样化方式快速简单接入,实现海量数据的存储管理。您可以使用数据保险箱对文件数据进行上传、下载,最终实现数据的安全存储和提取。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档