« 將 XML 與 HTML 表格匯入至 Excel 中 | 網頁 | 物件導向不再無限上綱 »
27/01/2006
將 XML 與 HTML 表格匯入至 Excel 中
有一天上班時,上級主管要我 "寫一套程式,把 XML 裡面的資料轉換成 Excel 檔格式,越快越好"。一直以來,我就是用 Java 寫 AP,想一想這樣的東西用 Java 寫,好像還要花不少時間。因為我不知道他的 xml 檔案格式長怎樣,因此若要程式夠靈活,就必須要能讓使用者選擇所要匯出的節點。哦,這時 XPath 就派上用途了… 但事情還是沒那麼簡單,因為我不可能叫 end user 輸入 XPath。如此一來,只好把 XML 的樹狀結構顯示出來,讓使用者可以由樹狀結構中選擇要匯出的節點。想到這裡,我不禁為他的 "越快越好" 黯然神傷。
好吧,這時候我拿出 "當主管最大的特權"… 就是可以把事情交待給別人做。這個月部門值星官是 June 小妹,我把六月找來:「Boss 要一套程式,可以把輸入的 XML 匯出成 Excel 檔,越快越好,最好就是今天!」
XMLFox Advance 登場
六月面有難色,不過她還是不負所望,不多久,她就在 Google 的協助下,找到一套程式(當然不是自己寫的囉。主管其實重點不是要我們自己寫,而是要把 XML 匯出成 Excel 檔) 叫 XMLFox Advance 的 shareware。
嘿,這套共享軟體還真的好用,只要打開一個 XML 檔案,當瀏覽到連續同一型態性的元素時,就可以採用工作表的方式來展開。接著按右鍵,選擇 Export to,就可以將該序列元素的內容以表格的形式匯出了。
註:所謂序列 (sequence) 元素,是指形式如下的元素:
[sequence]
[item y="1" x="1" id="p1"/]
[item y="1" x="0" id="p2"/]
[item y="0" x="0" id="p3"/]
[item y="0" x="1" id="p4"/]
[/sequence]也就是有元素名稱相同的重複子元素,且不同子元素屬性名稱最好也一致的節點。
事後除了感謝六月的快手,能在短短的時間內在網路上找到這套好用的軟體之外,我也想到,既然 XML 轉 Excel 格式檔是這麼普遍的功能,那麼 Excel 本身是不是就該內建這個功能呢?於是我打開 Excel 2003,試圖印證我的想法。(以下的 Excel 皆代表我所使用的 Excel 2003)
Excel 不負所望
略加測試之後,發現 Excel 果然如我預期,的確具備 XML 檔匯入的功能。只是若想得到一個漂亮的序列元素表,需要有些技巧。我的步驟是這樣的:
1. 從 Excel 開啟檔案對話窗中選擇一個有序列元素的 XML 檔中,Excel 會提示你下列對話窗,你要選擇「使用 [XML 來源] 工作窗格」。
Excel 接著會提示你以下訊息,按「確定」就是了!
2. 接下來 Excel 會在 XML 來源窗格中顯示 XML 的樹狀結構。注意其中 "資料夾" 圖示表示元素,而 "摺角文件" 圖示表示屬性。序列元素的資料夾圖示上,會有一個向下的按鈕,如下圖的 UM_Bin 元素:
3. 接下來用滑鼠拉曳你要展開成表格的序列元素,將它放至適當的你要展開的儲存格上。如下圖我是將 UM_Bin 元素放在 A1 儲存格上:
4. 再來,開啟清單工具列,點選其中的「重新整理 XML 資料」:
5. Excel 提示你資料匯入完成。按「確定」後可看見匯入的資料:
嗯! 整個過程就是如此。雖然不怎麼直覺,但也不會太難就是了。
Excel 載入 HTML 表格的功能
既然都可以匯入 XML 了,那麼載入 HTML 中的表格應也不成問題吧! 稍作測試,果然 Excel 也有這樣的功能。以下是我的操作步驟。
1. 在功能表上選擇「資料 / 匯入外部資料 / 新增 Web 查詢」。
2. Excel 彈出「新增 Web 查詢」視窗。在「地址」欄位中輸入資料來源的 URL:
3. 畫面上的箭頭指示你可選取的資料,點選你所要萃取的表格,讓它變成打勾狀:
4. 按「匯入」後,Excel 提示你要將資料放在哪裡,選一個你喜歡的儲存格就是了:
5. 最後,Excel 會將資料取回,置於你所指定的儲存格上:
結語
不得不承認,MS Ofiice 的設計還是挺符合人性。我在沒有看書,沒有參考說明檔的情況下,就能試出這樣的功能,便足以證明 MS Office 產品的可用性算是相當良好。有人懷疑,究竟 MS Office 所包含的功能裡面,一般的使用者究竟會用到幾分?其實我也的確這樣想,我可能不會用到它所有功能,但一旦我要的功能它有時,就會大大的減少我的負擔。
另外,我還要感謝那些被我荼毒的部門同仁,這可能是我農曆年前最後一篇 blog 了… 在此我要感謝你們帶著鋼盔向前衝的精神。有你們在,才能補足我思考的盲點,許多棘手的事情也變成可能。
22:40 發表於 Developing, Goodies, Web | 永久網址 | 留言 (4) | Email this | Tags: Programming, Excel XML HTML Table Export
留言
有關 excel to import the XML files, 似乎有 Max 的上限, 因為我們在提供部分的 XML 資料的時候, 有一些公司採用手動 Excel 轉換為 CSV 再進行轉檔作業, 但是當數量很大..( 我沒有嘗試過 ), 或是 encoding 很容易導致相關異常問題.. 我還是不建議這麼做..
無論任何語言, 現在都有相關的 parser 作為處理的工具 :)
發表人: jakarta99 | 06/02/2006
Thank you for your information!
您幫了我一個大忙了,
謝謝啦!
發表人: Adam | 16/03/2006
之前曾有研究所教授出過相關的題目
只是那時沒看過這一篇
所以只能用比較古老的方法解決
如果用這個方法的話
至少可以減少一半的解決時間
不過碰到不同版本的excel時
或多或少會需要多一些時間解決
發表人: Ying-Fu | 19/02/2008
之前曾有研究所教授出過相關的題目
只是那時沒看過這一篇
所以只能用比較古老的方法解決
如果用這個方法的話
至少可以減少一半的解決時間
不過碰到不同版本的excel時
或多或少會需要多一些時間解決
發表人: Ying-Fu | 19/02/2008














