有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Apache POI XSSFFont getBold()给出空指针异常

我正在检查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()时,我才会得到一个空指针异常,我不知道为什么

任何帮助都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    Apache POI JavaDocs on XSSFRichTextString.getFontAtIndex(int)开始:

    Returns:

    A copy of the font that's currently being applied at that index or null if no font is being applied or the index is out of range.

    对于富文本字符串,字符串的一部分可以应用特定(不同)字体,也可以使用单元格的默认字体。您的代码需要处理这两种情况

    因此,要应用字体,您需要执行以下操作:

    XSSFRichTextString val = cell4.getRichStringCellValue(); 
    XSSFFont f = val.getFontAtIndex(0);
    if (f == null) {
       // Default cell font applies
       XSSFCellStyle style = cell4.getCellStyle().getFont();
    }