apache poi читать пользовательское свойство
Я добавил пользовательское свойство в свой объект книги, например:
((XSSFWorkbook)workBook).getProperties().getCustomProperties().addProperty("fileNameSuffix" , "testName");
Теперь, как я могу прочитать это снова?
Почему нет такого метода как getProperty(String key)
?
2 ответа
Я придумаю способ сделать это, но мне не очень нравится этот способ
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
}
Вы имеете в виду как метод POIXMLProperties.CustomProperties.getProperty (String)? Я думаю, что должен делать то, что вы хотите. Что ж, если вы используете достаточно новую версию Apache POI, чтобы она была как минимум!
Однако обратите внимание, что он возвращает объект CTProperty, который является довольно низкоуровневым и не имеет явного типа. Вам придется позвонить в различные isSetXXX
методы, чтобы выяснить, что это такое, то getXXX
чтобы получить значение.
Есть пример того, как сделать это в POIXMLPropertiesTextExtractor