mirror of https://github.com/apache/poi.git
[bug-66216] fix issue where pivotTable.getPivotCacheDefinition() returns null
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1903442 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
ed67d48d96
commit
3184a18b40
|
@ -48,7 +48,7 @@ public class XSSFPivotCacheDefinition extends POIXMLDocumentPart{
|
||||||
private CTPivotCacheDefinition ctPivotCacheDefinition;
|
private CTPivotCacheDefinition ctPivotCacheDefinition;
|
||||||
|
|
||||||
@Beta
|
@Beta
|
||||||
public XSSFPivotCacheDefinition(){
|
public XSSFPivotCacheDefinition() {
|
||||||
super();
|
super();
|
||||||
ctPivotCacheDefinition = CTPivotCacheDefinition.Factory.newInstance();
|
ctPivotCacheDefinition = CTPivotCacheDefinition.Factory.newInstance();
|
||||||
createDefaultValues();
|
createDefaultValues();
|
||||||
|
|
|
@ -87,11 +87,20 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
|
||||||
//Removing root element
|
//Removing root element
|
||||||
options.setLoadReplaceDocumentElement(null);
|
options.setLoadReplaceDocumentElement(null);
|
||||||
pivotTableDefinition = CTPivotTableDefinition.Factory.parse(is, options);
|
pivotTableDefinition = CTPivotTableDefinition.Factory.parse(is, options);
|
||||||
|
pivotCacheDefinition = null;
|
||||||
} catch (XmlException e) {
|
} catch (XmlException e) {
|
||||||
throw new IOException(e.getLocalizedMessage());
|
throw new IOException(e.getLocalizedMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void lazyInitXSSFPivotCacheDefinition() {
|
||||||
|
for (POIXMLDocumentPart documentPart : getRelations()) {
|
||||||
|
if (documentPart instanceof XSSFPivotCacheDefinition) {
|
||||||
|
pivotCacheDefinition = (XSSFPivotCacheDefinition) documentPart;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Beta
|
@Beta
|
||||||
public void setPivotCache(XSSFPivotCache pivotCache) {
|
public void setPivotCache(XSSFPivotCache pivotCache) {
|
||||||
this.pivotCache = pivotCache;
|
this.pivotCache = pivotCache;
|
||||||
|
@ -126,6 +135,9 @@ public class XSSFPivotTable extends POIXMLDocumentPart {
|
||||||
|
|
||||||
@Beta
|
@Beta
|
||||||
public XSSFPivotCacheDefinition getPivotCacheDefinition() {
|
public XSSFPivotCacheDefinition getPivotCacheDefinition() {
|
||||||
|
if (pivotCacheDefinition == null) {
|
||||||
|
lazyInitXSSFPivotCacheDefinition();
|
||||||
|
}
|
||||||
return pivotCacheDefinition;
|
return pivotCacheDefinition;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3705,4 +3705,23 @@ public final class TestXSSFBugs extends BaseTestBugzillaIssues {
|
||||||
assertEquals(ErrorEval.VALUE_INVALID.getErrorCode(), cv1.getErrorValue());
|
assertEquals(ErrorEval.VALUE_INVALID.getErrorCode(), cv1.getErrorValue());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testBug66216() throws IOException {
|
||||||
|
File file = XSSFTestDataSamples.getSampleFile("ExcelPivotTableSample.xlsx");
|
||||||
|
try (
|
||||||
|
FileInputStream fis = new FileInputStream(file);
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook(fis)
|
||||||
|
) {
|
||||||
|
for (XSSFPivotTable pivotTable : workbook.getPivotTables()) {
|
||||||
|
assertNotNull(pivotTable.getCTPivotTableDefinition());
|
||||||
|
assertNotNull(pivotTable.getPivotCacheDefinition());
|
||||||
|
assertEquals(1, pivotTable.getRelations().size());
|
||||||
|
assertInstanceOf(XSSFPivotCacheDefinition.class, pivotTable.getRelations().get(0));
|
||||||
|
assertEquals("rId1", pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().getId());
|
||||||
|
assertEquals(3,
|
||||||
|
pivotTable.getPivotCacheDefinition().getCTPivotCacheDefinition().getRecordCount());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
Binary file not shown.
Loading…
Reference in New Issue