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() {
|
public boolean isBullet() {
|
||||||
ParagraphPropertyFetcher<Boolean> fetcher = new ParagraphPropertyFetcher<Boolean>(getLevel()){
|
ParagraphPropertyFetcher<Boolean> fetcher = new ParagraphPropertyFetcher<Boolean>(getLevel()){
|
||||||
public boolean fetch(CTTextParagraphProperties props){
|
public boolean fetch(CTTextParagraphProperties props){
|
||||||
if(props.isSetBuNone()) {
|
if (props.isSetBuNone()) {
|
||||||
setValue(false);
|
setValue(false);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if(props.isSetBuFont() || props.isSetBuChar() || props.isSetBuAutoNum()){
|
if (props.isSetBuFont()) {
|
||||||
setValue(true);
|
if (props.isSetBuChar() || props.isSetBuAutoNum()) {
|
||||||
return true;
|
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;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2369,6 +2369,34 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
|
|||||||
checkStyle(styleBack);
|
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) {
|
private void checkStyle(XSSFCellStyle cellStyle) {
|
||||||
assertNotNull(cellStyle);
|
assertNotNull(cellStyle);
|
||||||
assertEquals(0, cellStyle.getFillForegroundColor());
|
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