Java получает цвет фона ячейки Excel от Apache poi - PullRequest
0 голосов
/ 10 сентября 2018

Я пытаюсь получить информацию о цвете ячейки в файле .xlsx , используя Apache POI.

Метод cellStyle.getFillBackgroundColor() возвращается коротким. Как я могу конвертировать короткие в java.awt.Color или любой другой формат (XSSFColor).

В конечном итоге я хочу сохранить значение ячейки в зависимости от цвета фона.

 Workbook workbook = WorkbookFactory.create(new FileInputStream (new File(SAMPLE_XLSX_FILE_PATH)));
    Sheet sheet = workbook.getSheetAt(0);
    DataFormatter dataFormatter = new DataFormatter();
    sheet.forEach(row -> {
        row.forEach(cell -> {
            String cellValue = dataFormatter.formatCellValue(cell);
            CellStyle cellStyle = cell.getCellStyle();
            System.out.println(cellStyle.getFillBackgroundColor());
            //Color userColor = cellStyle.getFillBackgroundColor(); //ERROR 
        });
        System.out.println();
    });

Я использую версию 3.6, которая, я думаю, не поддерживает getFillBackgroundColorColor ()

<dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.6</version>
</dependency>

1 Ответ

0 голосов
/ 10 сентября 2018

С помощью электронных таблиц .xlsx вы можете вызвать getFillBackgroundColorColor (2 слова "Color") . Он возвращает org.apache.poi.ss.usermodel.Color (не очень полезный интерфейс), который реализует XSSFColor. Тогда вы можете разыграть его как XSSFColor.

XSSFColor = (XSSFColor) cellStyle.getFillBackgroundColorColor();

В качестве альтернативы, опять же с электронными таблицами .xlxs вы можете разыграть CellStyle как XSSFCellStyle, а метод getFillBackgroundColorColor XSSFCellStyle возвращает XSSFColor напрямую. Он также имеет getFillBackgroundXSSFColor, который делает то же самое.

Получить цвет заливки фона.

Примечание. Многие ячейки фактически заполнены заливкой переднего плана, а не заливкой фона - см. getFillForegroundColor()

Помните, что сплошные заливки реализованы как цвета переднего плана, поэтому цвет переднего плана может быть тем, что вам действительно нужно. Существуют дополнительные методы для цвета переднего плана, например, getFillForegroundColorColor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...