個人永久性免費-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:\Users\Administrator\AppData\Roaming\Microsoft\AddIns\ 不同用戶名將Administrator替換爲自己用戶名即可)。

讓Excel加載時檢測到或手動在加載項清單上進行【瀏覽】選擇操作,選擇電腦上存放的xll文件,特別是電腦上安裝了64位Excel和32位WPS時,文件不放到插件文件夾內,WPS不自動加載就不會報錯。

贈書環節

有耐心閱讀本文到此處的讀者,值得稱讚,你們對技術原理是有追求的。所以本次向北京大學出版社申請到的圖書《Excel圖表應用大全(高級版)》,希望努力的讀者繼續爭取拿下。

老規矩:文末留言被點贊數最多的兩名可獲得贈書一本。活動截止時間爲:2020.01.19晚22點。

對Excel圖表製作,在EasyShu上已經集成了大量的一鍵生成高級圖表的能力,但並不妨礙大家深入學習Excel圖表,對其原理知道得越深,越能隨心所欲完成自己想要的效果,EasyShu這樣的圖表插件,可以給大家做共性通用的圖表,仍然非常多的個性化需求未能滿足。

同樣地可以結合EasyShu中的圖表保護反保護功能,讓圖表學習過程更有樂趣和更方便拆解複雜圖表學習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章