public boolean isBullet() {
ParagraphPropertyFetcher<Boolean> fetcher = new ParagraphPropertyFetcher<Boolean>(getLevel()){
public boolean fetch(CTTextParagraphProperties props){
- if(props.isSetBuNone()) {
+ if (props.isSetBuNone()) {
setValue(false);
return true;
}
- if(props.isSetBuFont() || props.isSetBuChar() || props.isSetBuAutoNum()){
- setValue(true);
- return true;
+ if (props.isSetBuFont()) {
+ if (props.isSetBuChar() || props.isSetBuAutoNum()) {
+ setValue(true);
+ return true;
+ } else {
+ // Excel treats text with buFont but no char/autonum
+ // as not bulleted
+ // Possibly the font is just used if bullets turned on again?
+ }
}
return false;
}
checkStyle(styleBack);
}
+ /**
+ * Paragraph with property BuFont but none of the properties
+ * BuNone, BuChar, and BuAutoNum, used to trigger a NPE
+ * Excel treats this as not-bulleted, so now do we
+ */
+ @Test
+ public void testBug57826() {
+ XSSFWorkbook workbook = XSSFTestDataSamples.openSampleWorkbook("57826.xlsx");
+
+ assertTrue("no sheets in workbook", workbook.getNumberOfSheets() >= 1);
+ XSSFSheet sheet = workbook.getSheetAt(0);
+
+ XSSFDrawing drawing = sheet.getDrawingPatriarch();
+ assertNotNull(drawing);
+
+ List<XSSFShape> shapes = drawing.getShapes();
+ assertEquals(1, shapes.size());
+ assertTrue(shapes.get(0) instanceof XSSFSimpleShape);
+
+ XSSFSimpleShape shape = (XSSFSimpleShape)shapes.get(0);
+
+ // Used to throw a NPE
+ String text = shape.getText();
+
+ // No bulleting info included
+ assertEquals("test ok", text);
+ }
+
private void checkStyle(XSSFCellStyle cellStyle) {
assertNotNull(cellStyle);
assertEquals(0, cellStyle.getFillForegroundColor());