Browse Source

Bug 56557: Fix handling chart sheets

pull/1569/head
Antony Liu 2 months ago
parent
commit
cb4a7ea9aa
  1. 3
      ooxml/XSSF/Streaming/SXSSFWorkbook.cs
  2. 16
      testcases/ooxml/XSSF/Streaming/TestSXSSFWorkbook.cs
  3. 8
      testcases/ooxml/XSSF/XSSFTestDataSamples.cs
  4. BIN
      testcases/test-data/spreadsheet/56557.xlsx

3
ooxml/XSSF/Streaming/SXSSFWorkbook.cs

@ -471,7 +471,8 @@ namespace NPOI.XSSF.Streaming
zos.PutNextEntry(new ZipEntry(ze.Name));
var inputStream = zip.GetInputStream(ze);
XSSFSheet xSheet = GetSheetFromZipEntryName(ze.Name);
if (xSheet != null)
// See bug 56557, we should not inject data into the special ChartSheets
if (xSheet != null && !(xSheet is XSSFChartSheet))
{
SXSSFSheet sxSheet = GetSXSSFSheet(xSheet);
var xis = sxSheet.GetWorksheetXMLInputStream();

16
testcases/ooxml/XSSF/Streaming/TestSXSSFWorkbook.cs

@ -613,6 +613,20 @@ namespace TestCases.XSSF.Streaming
ClassicAssert.AreEqual("Test Row 9", s.GetRow(9).GetCell(2).StringCellValue);
}
[Test]
public void Test56557()
{
IWorkbook wb = XSSFTestDataSamples.OpenSampleWorkbook("56557.xlsx");
// Using streaming XSSFWorkbook makes the output file invalid
wb = new SXSSFWorkbook((XSSFWorkbook)wb);
// Should not throw POIXMLException: java.io.IOException: Unable to parse xml bean when reading back
IWorkbook wbBack = XSSFTestDataSamples.WriteOutAndReadBack(wb);
ClassicAssert.IsNotNull(wbBack);
wbBack.Close();
wb.Close();
}
}
}

8
testcases/ooxml/XSSF/XSSFTestDataSamples.cs

@ -25,7 +25,9 @@ using NPOI.Util;
using NPOI.HSSF;
using TestCases.HSSF;
using System.Diagnostics;
using NUnit.Framework;using NUnit.Framework.Legacy;
using NUnit.Framework;
using NUnit.Framework.Legacy;
using NPOI.XSSF.Streaming;
namespace NPOI.XSSF
{
@ -86,6 +88,10 @@ namespace NPOI.XSSF
sw2.Stop();
Debug.WriteLine("XSSFWorkbook parse time: " + sw2.ElapsedMilliseconds + "ms");
}
else if (wb is SXSSFWorkbook)
{
result = new SXSSFWorkbook(new XSSFWorkbook(is1));
}
else
{
throw new RuntimeException("Unexpected workbook type ("

BIN
testcases/test-data/spreadsheet/56557.xlsx

Loading…
Cancel
Save