如何在XSSF中获取背景单元格颜色

时间:2019-04-04 07:39:13

标签: java apache-poi

我在项目中使用的是apache poi 3.9,我需要获取XSSF文件单元格背景色。

Workbook myWorkBook = WorkbookFactory.create(new File(filePath));
Sheet mySheet = myWorkBook.getSheetAt(0);
Row currentRow = null;
Iterator<Row> rowIterator = mySheet.iterator();
while (rowIterator.hasNext())
{
currentRow = (Row) rowIterator.next();
totalColumns = currentRow.getPhysicalNumberOfCells();

for (int column = 0; column < totalColumns; column++)
{
Cell cell = currentRow.getCell(column);
CellStyle cellStyle = cell.getCellStyle();
short colorIdx=cellStyle.getFillForegroundColor();
// I am struct in this step  to get XSSF  cell background color

}
}

1 个答案:

答案 0 :(得分:1)

采用二进制mapnum_parallel_calls)格式(BIFF中的*.xls),颜色只能是调色板中的索引颜色。

但是以HSSFapache poi)格式(Office Open XML中的*.xlsx),颜色也可以XSSF的形式给出。因此,在apache poi中,并非所有颜色都是索引颜色。这就是为什么CellStyle.getFillForegroundColor如果填充前景色(填充图案的颜色)不是索引色返回0的原因。

请在RGB中使用CellStyle.getFillForegroundColorColor。返回Color,它是XSSF中的XSSFColor