我在项目中使用的是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
}
}
答案 0 :(得分:1)
采用二进制map
(num_parallel_calls
)格式(BIFF
中的*.xls
),颜色只能是调色板中的索引颜色。
但是以HSSF
(apache poi
)格式(Office Open XML
中的*.xlsx
),颜色也可以XSSF
的形式给出。因此,在apache poi
中,并非所有颜色都是索引颜色。这就是为什么CellStyle.getFillForegroundColor如果填充前景色(填充图案的颜色)不是索引色返回0的原因。
请在RGB
中使用CellStyle.getFillForegroundColorColor。返回Color,它是XSSF
中的XSSFColor。