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
This commit is contained in:
parent
c029154424
commit
b2a1862f19
@ -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;
|
||||
}
|
||||
|
@ -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
Normal file
BIN
test-data/spreadsheet/57826.xlsx
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user