aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorYegor Kozlov <yegor@apache.org>2012-02-29 10:36:11 +0000
committerYegor Kozlov <yegor@apache.org>2012-02-29 10:36:11 +0000
commited05f24b6c5b8182fdc645ed8a9c99581d5bef0a (patch)
tree980f81cf1502e2c22a468161fc7f4c4a0139c358
parentafaf6472d0c580f06598bb2ea55c55cd3d1fcf16 (diff)
downloadpoi-ed05f24b6c5b8182fdc645ed8a9c99581d5bef0a.tar.gz
poi-ed05f24b6c5b8182fdc645ed8a9c99581d5bef0a.zip
Bugzilla 51673 - support grouping rows in SXSSF
git-svn-id: https://svn.apache.org/repos/asf/poi/trunk@1295058 13f79535-47bb-0310-9956-ffa450edef68
-rw-r--r--src/documentation/content/xdocs/status.xml1
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java10
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java20
-rw-r--r--src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java3
4 files changed, 30 insertions, 4 deletions
diff --git a/src/documentation/content/xdocs/status.xml b/src/documentation/content/xdocs/status.xml
index 538273a20e..e374a544dc 100644
--- a/src/documentation/content/xdocs/status.xml
+++ b/src/documentation/content/xdocs/status.xml
@@ -34,6 +34,7 @@
<changes>
<release version="3.8-beta6" date="2012-??-??">
+ <action dev="poi-developers" type="add">51673 - support grouping rows in SXSSF</action>
<action dev="poi-developers" type="add">51780 - support replacement of content types in OPC packages </action>
<action dev="poi-developers" type="fix">52784 - replace ISO control characters with question marks in SXSSF to be consistent with XSSF </action>
<action dev="poi-developers" type="add">52057 - updated formula test framework to be aware of recently added Functions </action>
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java
index 341f56b833..1bd53bc8b2 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFRow.java
@@ -25,7 +25,6 @@ import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.CellStyle;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
-import org.apache.poi.xssf.usermodel.XSSFCellStyle;
/**
* Streaming version of XSSFRow implementing the "BigGridDemo" strategy.
@@ -40,6 +39,7 @@ public class SXSSFRow implements Row
short _style=-1;
short _height=-1;
boolean _zHeight = false;
+ int _outlineLevel = 0; // Outlining level of the row, when outlining is on
public SXSSFRow(SXSSFSheet sheet, int initialSize)
{
@@ -54,6 +54,14 @@ public class SXSSFRow implements Row
{
return _height!=-1;
}
+
+ int getOutlineLevel(){
+ return _outlineLevel;
+ }
+ void setOutlineLevel(int level){
+ _outlineLevel = level;
+ }
+
//begin of interface implementation
public Iterator<Cell> iterator()
{
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
index 5e2aba7b0a..0311ec55fb 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SXSSFSheet.java
@@ -26,11 +26,12 @@ import org.apache.poi.ss.SpreadsheetVersion;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.SheetUtil;
-import org.apache.poi.util.Internal;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.hssf.util.PaneInformation;
import org.apache.poi.ss.util.CellRangeAddress;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr;
+import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
/**
* Streaming version of XSSFSheet implementing the "BigGridDemo" strategy.
@@ -44,6 +45,7 @@ public class SXSSFSheet implements Sheet, Cloneable
TreeMap<Integer,SXSSFRow> _rows=new TreeMap<Integer,SXSSFRow>();
SheetDataWriter _writer;
int _randomAccessWindowSize = SXSSFWorkbook.DEFAULT_WINDOW_SIZE;
+ int outlineLevelRow = 0;
public SXSSFSheet(SXSSFWorkbook workbook, XSSFSheet xSheet) throws IOException
{
@@ -1036,7 +1038,18 @@ public class SXSSFSheet implements Sheet, Cloneable
*/
public void groupRow(int fromRow, int toRow)
{
- _sh.groupRow(fromRow, toRow);
+ for(SXSSFRow row : _rows.subMap(fromRow, toRow + 1).values()){
+ int level = row.getOutlineLevel() + 1;
+ row.setOutlineLevel(level);
+
+ if(level > outlineLevelRow) outlineLevelRow = level;
+ }
+
+ CTWorksheet ct = _sh.getCTWorksheet();
+ CTSheetFormatPr pr = ct.isSetSheetFormatPr() ?
+ ct.getSheetFormatPr() :
+ ct.addNewSheetFormatPr();
+ pr.setOutlineLevelRow((short)outlineLevelRow);
}
/**
@@ -1058,7 +1071,8 @@ public class SXSSFSheet implements Sheet, Cloneable
*/
public void setRowGroupCollapsed(int row, boolean collapse)
{
- _sh.setRowGroupCollapsed(row, collapse);
+ //_sh.setRowGroupCollapsed(row, collapse);
+ throw new RuntimeException("Not Implemented");
}
/**
diff --git a/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java b/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
index c9a34a4630..1823fec798 100644
--- a/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
+++ b/src/ooxml/java/org/apache/poi/xssf/streaming/SheetDataWriter.java
@@ -137,6 +137,9 @@ public class SheetDataWriter {
_out.write(" s=\"" + row._style + "\"");
_out.write(" customFormat=\"1\"");
}
+ if (row.getOutlineLevel() != 0) {
+ _out.write(" outlineLevel=\"" + row.getOutlineLevel() + "\"");
+ }
_out.write(">\n");
this._rownum = rownum;
_rowContainedNullCells = false;