我正在尝试检查excel中的字体是否为粗体。每次运行代码时都会出现空指针异常。
XSSFSheet sheet1 = workbook.getSheetAt(1);
XSSFRow row1 = sheet1.getRow(1);
XSSFCell cell4 = row1.getCell(4);
XSSFRichTextString val = cell4.getRichStringCellValue();
System.out.println(val.toString());
XSSFFont f = val.getFontAtIndex(0);
System.out.println(f.getBold()); <--- this line is where the problem at
val.toString()工作正常。只有当我运行最后一行f.getBold()时,我才会得到一个空指针异常,我无法弄明白为什么。
任何帮助将不胜感激!
答案 0 :(得分:0)
来自Apache POI JavaDocs on XSSFRichTextString.getFontAtIndex(int):
返回:
当前在该索引处应用的字体的副本,如果没有应用字体或索引超出范围,则为null。
使用富文本字符串时,字符串的一部分可以应用特定(不同)字体,也可以使用单元格的默认字体。您的代码需要处理这两种情况
要获得应用的字体,您需要执行更多类似的操作:
XSSFRichTextString val = cell4.getRichStringCellValue();
XSSFFont f = val.getFontAtIndex(0);
if (f == null) {
// Default cell font applies
XSSFCellStyle style = cell4.getCellStyle().getFont();
}