个人永久性免费-Excel催化剂自定义函数实现带命名空间的xml文件元素信息提取

在过去网页采集功能开发过程中,已经推出一组针对网页元素的提取函数,将网页采集常见的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:UsersAdministratorAppDataRoamingMicrosoftAddIns 不同用户名将Administrator替换为自己用户名即可)。

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

赠书环节

有耐心阅读本文到此处的读者,值得称赞,你们对技术原理是有追求的。所以本次向北京大学出版社申请到的图书《Excel图表应用大全(高级版)》,希望努力的读者继续争取拿下。

老规矩:文末留言被点赞数最多的两名可获得赠书一本。活动截止时间为:2020.01.19晚22点。

对Excel图表制作,在EasyShu上已经集成了大量的一键生成高级图表的能力,但并不妨碍大家深入学习Excel图表,对其原理知道得越深,越能随心所欲完成自己想要的效果,EasyShu这样的图表插件,可以给大家做共性通用的图表,仍然非常多的个性化需求未能满足。

同样地可以结合EasyShu中的图表保护反保护功能,让图表学习过程更有乐趣和更方便拆解复杂图表学习。

原文地址:https://www.cnblogs.com/ExcelCuiHuaJi/p/14292107.html