如何通过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的位置