2016-03-11 69 views
1

我正在使用LibreOffice 5.1.1.3(x64),我想實時導入遠程XML文件。文件網址是:http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml如何使用FILTERXML計算功能?

我寫了這個公式,但計算的進口僅杉杉行。

=FILTERXML(WEBSERVICE("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml"),"/main/DATA_RECORD") 

這是正常的嗎?如何導入XPath查詢輸出的所有行?

在GDrive的片它的工作原理:

=IMPORTXML("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml","/main/DATA_RECORD") 

非常感謝您

回答

0

顯然FILTERXML返回它找到的第一個匹配。使用[]語法來指定不同的匹配。

爲了得到一個DATA_RECORD各行中,在單元格A1中輸入驗證:

=FILTERXML(WEBSERVICE("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml"),"/main/DATA_RECORD[" & ROW() & "]") 

然後向下使用單元格的右下角的小方框拖到公式。

爲了讓整個頁面,使用WEBSERVICE命令而不FILTERXML

對於LibreOffice的更強大的XML解析,就必須寫一個宏。有幾個UNO服務可用,例如Andrew Pitonyak's Macro Document的第5.38節。或者,您可以使用Java或Python編寫宏,並使用其XML解析庫之一。

+0

謝謝,但以這種方式,它不是一個偉大的工具。 此外,它不會將結果拆分爲單元格,但全部都在一個單元格中。 我認爲對於這種事情我繼續使用Gdrive表:( – aborruso

0

從LibreOffice 5.2.2開始LibreOffice中的FILTERXML函數在數組上下文中正確工作,可以更容易地訪問XPath數組結果。

你可以通過選擇例如A1:A10並在A1中插入公式=FILTERXML(WEBSERVICE("http://www.comune.palermo.it/xmls/VIS_DATASET_AGENZIE.xml"),"/main/DATA_RECORD")並按CTRL+SHIFT+ENTER

每個單元格現在將包含返回的XPath數組的不同條目。相應的錯誤報告可以在the LibreOffice bug tracker找到。


對於其他尋找將文檔導入到LibreOffice Calc中的人。目前在Data->XML Source對話框中有另一種方法可以選擇XML文檔的一部分並導入它。 LibreOffice 6.0還部分完成了部分工作,允許在應用文檔之前導入外部數據並進行轉換。這可能會取代WEBSERVICE + FILTERXML的許多使用案例。