Browse Source

Patch from Jon Scharff from bug #57826 - If a XSSF shape has a buFont but no bullet character, mirror Excel and treat as un-bulleted

git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1676831 13f79535-47bb-0310-9956-ffa450edef68
tags/REL_3_12_FINAL
Nick Burch 9 years ago
parent
commit
15550d5d8c

+ 10
- 4
src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFTextParagraph.java View File

@@ -709,13 +709,19 @@ public class XSSFTextParagraph implements Iterable<XSSFTextRun>{
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;
}

+ 28
- 0
src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFBugs.java View File

@@ -2369,6 +2369,34 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
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());

BIN
test-data/spreadsheet/57826.xlsx View File


Loading…
Cancel
Save