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

Другие вопросы по тегам