2014-09-03 199 views
0

我添加了一個自定義屬性,以我的工作簿中的對象,如:
的Apache POI讀取自定義屬性

((XSSFWorkbook)workBook).getProperties().getCustomProperties().addProperty("fileNameSuffix" , "testName"); 

現在我該怎麼回去看了一遍。
爲什麼沒有像getProperty(String key)這樣的方法?

回答

0

我想辦法做到這一點,但我真的不喜歡這種方式

List<CTProperty> customProperties = workBook.getProperties().getCustomProperties().getUnderlyingProperties().getPropertyList(); 
    String fileNameSuffix = ""; 
    for(int i = 0 ; i < customProperties.size() ; i++) { 
     CTProperty property = customProperties.get(i); 
     if (customProperties.get(i).getName().equals("testName")) 
      fileNameSuffix = property.getLpwstr(); // getLpwstr() will return the value of the property 
    } 
1

你的意思是一樣的方法POIXMLProperties.CustomProperties.getProperty(String)?我認爲這應該做你想做的。那麼,假設你至少有足夠新的Apache POI版本!

但是,請注意,它返回一個CTProperty對象,它是相當低級別的,並且沒有明確的類型。你必須調用各種isSetXXX方法來確定它是什麼類型,然後getXXX來獲得價值。

有一個例子如何在POIXMLPropertiesTextExtractor

+0

Thanx男人。這有幫助。 – Soosh 2014-09-07 04:19:24