使用Apache POI版本3.15(当前是最新的稳定的非beta版本)时,出现一个奇怪的错误,并且我的互联网搜索没有向其他任何人显示此错误。我试图简单地加粗一个单元格,例如:

Workbook wb = new HSSFWorkbook();
HSSFFont font = wb.createFont();
font.setBold(true);


我已经遇到一个问题,它声称工作簿正在创建的字体不是HSSFFont,而是一些普通字体:


  不兼容的类型:字体不能转换为HSSFFont


我尝试创建普通字体并将其应用于CellStyle,但是将其添加到cellStyle时会导致nullPointerException。我很茫然。

最佳答案

wb.createFont()返回org.apache.poi.ss.usermodel.Font,但是如果您检查Font的运行时类,则返回的实际上是HSSFFont。您可以尝试强制转换为HSSFFont或仅作为Font访问它:

final Workbook wb = new HSSFWorkbook();

final HSSFFont hssfFont = (HSSFFont)wb.createFont();
hssfFont.setBold(true);

final Font font = wb.createFont();
font.setBold(true);

09-05 00:06