如何通过Apache POI确定单元格中文本的一部分的颜色
我有Excel表格。 在单元格中,我们可以使文本( for example text1;text2
)和第1部分( text1
)具有黑色,而另一个( text2
)则具有例如红色。 为了读取Excel文件,我使用Apache POI。
请问如何确定文本第二部分的颜色( which in our case is red
)。
为了确定单元格中的整个文本,我现在使用这个代码:
HSSFCellStyle cellStyle = (HSSFCellStyle) currentCell.getCellStyle(); short cellColor = cellStyle.getFont(currentCell.getSheet().getWorkbook()).getColor();
我不知道是否确定它是正确的
您需要将单元格的内容作为RichTextString获取,然后从中获取格式化信息
对于HSSF,你的代码将会是这样的:
HSSFRichTextString richTextString = hssfCell.getRichStringCellValue(); for (int i=0; i<richTextString.0,r.numFormattingRuns(); i++) { if (richTextString.getFontAtIndex(i) == HSSFRichTextString.NO_FONT) { // Default cell formatting rules apply to this bit } else { HSSFFont font = workbook.getFontAt(richTextString.getFontAtIndex(i)); // This bit of the string has the above font } }
你可以使用像getIndexOfFormattingRun()这样的方法计算出字体改变的string的位置