我目前使用POI嘗試從一批Word文檔中提取文本,並且需要能夠確定文檔包含的條目。我已經能夠拉到文檔根目錄並拉第一個條目,但我希望能夠查看所有條目。 getEntries()
方法似乎提供此功能,但我不知道如何使用getViewableIterator()
將它們拉出。如何在POI中使用getViewableIterator
下面是我的代碼明智:
<cfset myFile = createObject("java", "java.io.FileInputStream").init(fileInputPath)>
<cfset fileSystem = CreateObject("java", "org.apache.poi.poifs.filesystem.POIFSFileSystem").Init(myFile)>
<cfloop from="1" to="#fileSystem.getRoot().getEntryCount()#" index="i">
<cfset viewableIterator = fileSystem.getRoot().getEntries().next().getViewableIterator()>
<cfset nextEntry = fileSystem.getRoot().getEntries().next()>
<cfif viewableIterator.hasNext()>
<cfdump var="#nextEntry.getShortDescription()#">
<cfset viewableIterator.remove()>
</cfif>
</cfloop>
在第一循環中,我能夠獲得的第一項就好了。但是,只要執行remove()
,就會收到java.lang.IllegalStateException
錯誤。很明顯,我沒有正確使用remove()
方法,但我一直無法找到如何正確使用它的任何示例。任何幫助將不勝感激。
好,以確保我正確地理解這一點,在循環中x的每次通話,迭代器會自動移動到哈希的下一個元素? (順便說一下,你看到的XML實際上並不是XML,它是ColdFusion標記) – 2009-04-26 20:41:39
是的,只要你調用next(),迭代器就會移動到下一個元素。 – mihi 2009-04-27 17:12:17