2008-01-16 11:08:22 -05:00
|
|
|
/* ====================================================================
|
|
|
|
Licensed to the Apache Software Foundation (ASF) under one or more
|
|
|
|
contributor license agreements. See the NOTICE file distributed with
|
|
|
|
this work for additional information regarding copyright ownership.
|
|
|
|
The ASF licenses this file to You under the Apache License, Version 2.0
|
|
|
|
(the "License"); you may not use this file except in compliance with
|
|
|
|
the License. You may obtain a copy of the License at
|
|
|
|
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
See the License for the specific language governing permissions and
|
|
|
|
limitations under the License.
|
|
|
|
==================================================================== */
|
|
|
|
|
|
|
|
package org.apache.poi.xssf.usermodel;
|
|
|
|
|
2008-03-21 15:14:43 -04:00
|
|
|
import java.io.IOException;
|
|
|
|
import java.io.OutputStream;
|
2008-04-05 17:43:53 -04:00
|
|
|
import java.util.ArrayList;
|
2008-01-16 11:08:22 -05:00
|
|
|
import java.util.Iterator;
|
2008-01-22 08:28:48 -05:00
|
|
|
import java.util.LinkedList;
|
|
|
|
import java.util.List;
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
import org.apache.poi.hssf.util.PaneInformation;
|
|
|
|
import org.apache.poi.ss.usermodel.CellStyle;
|
|
|
|
import org.apache.poi.ss.usermodel.Comment;
|
2008-03-31 19:15:38 -04:00
|
|
|
import org.apache.poi.ss.usermodel.CommentsSource;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.apache.poi.ss.usermodel.Footer;
|
|
|
|
import org.apache.poi.ss.usermodel.Header;
|
2008-04-05 17:43:53 -04:00
|
|
|
import org.apache.poi.ss.usermodel.Hyperlink;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.apache.poi.ss.usermodel.Patriarch;
|
|
|
|
import org.apache.poi.ss.usermodel.PrintSetup;
|
|
|
|
import org.apache.poi.ss.usermodel.Row;
|
|
|
|
import org.apache.poi.ss.usermodel.Sheet;
|
2008-04-05 13:42:10 -04:00
|
|
|
import org.apache.poi.ss.util.CellReference;
|
2008-04-06 16:34:00 -04:00
|
|
|
import org.apache.poi.ss.util.Region;
|
2008-03-31 19:15:38 -04:00
|
|
|
import org.apache.poi.xssf.model.CommentsTable;
|
2008-07-29 19:03:25 -04:00
|
|
|
import org.apache.poi.xssf.model.Control;
|
|
|
|
import org.apache.poi.xssf.model.Drawing;
|
2008-01-25 11:25:14 -05:00
|
|
|
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
2008-03-21 15:14:43 -04:00
|
|
|
import org.apache.xmlbeans.XmlOptions;
|
2008-04-05 17:43:53 -04:00
|
|
|
import org.openxml4j.opc.PackagePart;
|
|
|
|
import org.openxml4j.opc.PackageRelationship;
|
|
|
|
import org.openxml4j.opc.PackageRelationshipCollection;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.drawingml.x2006.chart.CTBoolean;
|
2008-01-29 08:32:48 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBreak;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
2008-03-21 15:14:43 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTControls;
|
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCustomProperties;
|
2008-02-29 09:18:06 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
2008-04-05 17:43:53 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHyperlink;
|
2008-04-06 16:34:00 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTMergeCell;
|
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTMergeCells;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTOutlinePr;
|
2008-01-29 08:32:48 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
|
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
|
2008-02-29 09:18:06 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetUpPr;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetup;
|
2008-04-07 15:54:43 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPane;
|
2008-02-29 09:18:06 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPrintOptions;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRecord;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
|
2008-03-08 06:19:23 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSelection;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetData;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr;
|
2008-01-29 08:32:48 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr;
|
2008-02-29 09:18:06 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView;
|
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
|
2008-01-16 11:08:22 -05:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
2008-04-07 15:54:43 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STPane;
|
2008-09-11 11:11:57 -04:00
|
|
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.STSheetState;
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
|
|
|
|
public class XSSFSheet implements Sheet {
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTSheet sheet;
|
|
|
|
protected CTWorksheet worksheet;
|
|
|
|
protected CTDialogsheet dialogsheet;
|
|
|
|
protected List<Row> rows;
|
2008-04-05 17:43:53 -04:00
|
|
|
protected List<XSSFHyperlink> hyperlinks;
|
2008-02-29 09:18:06 -05:00
|
|
|
protected ColumnHelper columnHelper;
|
|
|
|
protected XSSFWorkbook workbook;
|
2008-03-31 19:15:38 -04:00
|
|
|
protected CommentsSource sheetComments;
|
2008-04-06 16:34:00 -04:00
|
|
|
protected CTMergeCells ctMergeCells;
|
2008-09-11 11:11:57 -04:00
|
|
|
|
|
|
|
|
2008-07-29 19:03:25 -04:00
|
|
|
protected ArrayList<Drawing> drawings;
|
|
|
|
protected ArrayList<Control> controls;
|
2008-01-29 08:32:48 -05:00
|
|
|
|
2008-09-11 11:11:57 -04:00
|
|
|
|
2008-01-29 08:32:48 -05:00
|
|
|
public static final short LeftMargin = 0;
|
|
|
|
public static final short RightMargin = 1;
|
|
|
|
public static final short TopMargin = 2;
|
|
|
|
public static final short BottomMargin = 3;
|
|
|
|
public static final short HeaderMargin = 4;
|
|
|
|
public static final short FooterMargin = 5;
|
2008-02-07 09:08:32 -05:00
|
|
|
|
2008-07-29 19:03:25 -04:00
|
|
|
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook, CommentsSource sheetComments, ArrayList<Drawing> drawings, ArrayList<Control> controls) {
|
|
|
|
this(sheet, worksheet, workbook, sheetComments);
|
|
|
|
this.drawings = drawings;
|
|
|
|
this.controls = controls;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ArrayList<Drawing> getDrawings()
|
|
|
|
{
|
|
|
|
return drawings;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ArrayList<Control> getControls()
|
|
|
|
{
|
|
|
|
return controls;
|
|
|
|
}
|
|
|
|
|
2008-03-31 19:15:38 -04:00
|
|
|
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook, CommentsSource sheetComments) {
|
2008-03-08 06:19:23 -05:00
|
|
|
this(sheet, worksheet, workbook);
|
|
|
|
this.sheetComments = sheetComments;
|
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook) {
|
|
|
|
this.workbook = workbook;
|
2008-02-07 09:08:32 -05:00
|
|
|
this.sheet = sheet;
|
|
|
|
this.worksheet = worksheet;
|
2008-02-29 09:18:06 -05:00
|
|
|
if (this.worksheet == null) {
|
|
|
|
this.worksheet = CTWorksheet.Factory.newInstance();
|
|
|
|
}
|
|
|
|
if (this.worksheet.getSheetData() == null) {
|
|
|
|
this.worksheet.addNewSheetData();
|
|
|
|
}
|
|
|
|
initRows(this.worksheet);
|
|
|
|
initColumns(this.worksheet);
|
2008-04-05 17:43:53 -04:00
|
|
|
|
|
|
|
hyperlinks = new ArrayList<XSSFHyperlink>();
|
2008-02-29 09:18:06 -05:00
|
|
|
}
|
2008-02-07 09:08:32 -05:00
|
|
|
|
2008-02-13 08:43:42 -05:00
|
|
|
public XSSFSheet(XSSFWorkbook workbook) {
|
|
|
|
this.workbook = workbook;
|
2008-04-05 17:43:53 -04:00
|
|
|
|
|
|
|
hyperlinks = new ArrayList<XSSFHyperlink>();
|
2008-02-13 08:43:42 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public XSSFWorkbook getWorkbook() {
|
|
|
|
return this.workbook;
|
|
|
|
}
|
2008-03-21 15:14:43 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Tweaks the CTWorksheet to fit with what Excel
|
|
|
|
* will accept without a massive huff, and write into
|
|
|
|
* the OutputStream supplied.
|
|
|
|
*/
|
2008-04-05 17:43:53 -04:00
|
|
|
protected void save(PackagePart sheetPart, XmlOptions xmlOptions) throws IOException {
|
2008-03-21 15:14:43 -04:00
|
|
|
// Excel objects to <cols/>
|
|
|
|
if(worksheet.getColsArray().length == 1) {
|
|
|
|
CTCols col = worksheet.getColsArray(0);
|
|
|
|
if(col.getColArray().length == 0) {
|
|
|
|
worksheet.setColsArray(null);
|
|
|
|
}
|
|
|
|
}
|
2008-04-05 17:43:53 -04:00
|
|
|
|
|
|
|
// Now re-generate our CTHyperlinks, if needed
|
|
|
|
if(hyperlinks.size() > 0) {
|
|
|
|
if(worksheet.getHyperlinks() == null) {
|
|
|
|
worksheet.addNewHyperlinks();
|
|
|
|
}
|
|
|
|
CTHyperlink[] ctHls = new CTHyperlink[hyperlinks.size()];
|
|
|
|
for(int i=0; i<ctHls.length; i++) {
|
|
|
|
// If our sheet has hyperlinks, have them add
|
|
|
|
// any relationships that they might need
|
|
|
|
XSSFHyperlink hyperlink = hyperlinks.get(i);
|
|
|
|
hyperlink.generateRelationIfNeeded(sheetPart);
|
|
|
|
// Now grab their underling object
|
|
|
|
ctHls[i] = hyperlink.getCTHyperlink();
|
|
|
|
}
|
|
|
|
worksheet.getHyperlinks().setHyperlinkArray(ctHls);
|
|
|
|
}
|
2008-03-21 15:14:43 -04:00
|
|
|
|
|
|
|
// Save
|
2008-04-05 17:43:53 -04:00
|
|
|
OutputStream out = sheetPart.getOutputStream();
|
2008-03-21 15:14:43 -04:00
|
|
|
worksheet.save(out, xmlOptions);
|
2008-04-05 17:43:53 -04:00
|
|
|
out.close();
|
2008-03-21 15:14:43 -04:00
|
|
|
}
|
2008-02-29 09:18:06 -05:00
|
|
|
|
|
|
|
protected CTWorksheet getWorksheet() {
|
|
|
|
return this.worksheet;
|
|
|
|
}
|
|
|
|
|
|
|
|
public ColumnHelper getColumnHelper() {
|
|
|
|
return columnHelper;
|
|
|
|
}
|
2008-02-13 08:43:42 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected void initRows(CTWorksheet worksheet) {
|
2008-02-07 09:08:32 -05:00
|
|
|
this.rows = new LinkedList<Row>();
|
|
|
|
for (CTRow row : worksheet.getSheetData().getRowArray()) {
|
2008-02-13 08:43:42 -05:00
|
|
|
this.rows.add(new XSSFRow(row, this));
|
2008-02-07 09:08:32 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected void initColumns(CTWorksheet worksheet) {
|
2008-01-25 11:25:14 -05:00
|
|
|
columnHelper = new ColumnHelper(worksheet);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
2008-04-05 17:43:53 -04:00
|
|
|
|
|
|
|
protected void initHyperlinks(PackageRelationshipCollection hyperRels) {
|
|
|
|
if(worksheet.getHyperlinks() == null) return;
|
|
|
|
|
|
|
|
// Turn each one into a XSSFHyperlink
|
|
|
|
for(CTHyperlink hyperlink : worksheet.getHyperlinks().getHyperlinkArray()) {
|
|
|
|
PackageRelationship hyperRel = null;
|
|
|
|
if(hyperlink.getId() != null) {
|
|
|
|
hyperRel = hyperRels.getRelationshipByID(hyperlink.getId());
|
|
|
|
}
|
|
|
|
|
2008-04-07 06:31:55 -04:00
|
|
|
hyperlinks.add(
|
|
|
|
new XSSFHyperlink(hyperlink, hyperRel)
|
|
|
|
);
|
2008-04-05 17:43:53 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2008-01-23 10:52:59 -05:00
|
|
|
protected CTSheet getSheet() {
|
|
|
|
return this.sheet;
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public int addMergedRegion(Region region) {
|
2008-04-06 16:34:00 -04:00
|
|
|
addNewMergeCell(region);
|
|
|
|
return ctMergeCells.sizeOfMergeCellArray();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void autoSizeColumn(short column) {
|
2008-02-29 09:18:06 -05:00
|
|
|
columnHelper.setColBestFit(column, true);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public Patriarch createDrawingPatriarch() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void createFreezePane(int colSplit, int rowSplit, int leftmostColumn, int topRow) {
|
2008-04-07 15:54:43 -04:00
|
|
|
this.createFreezePane(colSplit, rowSplit);
|
|
|
|
this.showInPane((short)topRow, (short)leftmostColumn);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void createFreezePane(int colSplit, int rowSplit) {
|
2008-04-07 15:54:43 -04:00
|
|
|
getPane().setXSplit(colSplit);
|
|
|
|
getPane().setYSplit(rowSplit);
|
|
|
|
// make bottomRight default active pane
|
|
|
|
getPane().setActivePane(STPane.BOTTOM_RIGHT);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
2008-04-02 19:02:41 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a new comment for this sheet. You still
|
|
|
|
* need to assign it to a cell though
|
|
|
|
*/
|
|
|
|
public Comment createComment() {
|
|
|
|
return getComments().addComment();
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
2008-02-13 08:43:42 -05:00
|
|
|
protected XSSFRow addRow(int index, int rownum) {
|
|
|
|
CTRow row = this.worksheet.getSheetData().insertNewRow(index);
|
|
|
|
XSSFRow xrow = new XSSFRow(row, this);
|
|
|
|
xrow.setRowNum(rownum);
|
|
|
|
return xrow;
|
|
|
|
}
|
2008-01-22 08:28:48 -05:00
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public Row createRow(int rownum) {
|
2008-01-22 08:28:48 -05:00
|
|
|
int index = 0;
|
|
|
|
for (Row r : this.rows) {
|
|
|
|
if (r.getRowNum() == rownum) {
|
|
|
|
// Replace r with new row
|
|
|
|
XSSFRow xrow = addRow(index, rownum);
|
|
|
|
rows.set(index, xrow);
|
|
|
|
return xrow;
|
|
|
|
}
|
|
|
|
if (r.getRowNum() > rownum) {
|
|
|
|
XSSFRow xrow = addRow(index, rownum);
|
|
|
|
rows.add(index, xrow);
|
|
|
|
return xrow;
|
|
|
|
}
|
|
|
|
++index;
|
|
|
|
}
|
|
|
|
XSSFRow xrow = addRow(index, rownum);
|
|
|
|
rows.add(xrow);
|
|
|
|
return xrow;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-04-07 15:54:43 -04:00
|
|
|
public void createSplitPane(int xSplitPos, int ySplitPos, int leftmostColumn, int topRow, int activePane) {
|
|
|
|
createFreezePane(xSplitPos, ySplitPos, leftmostColumn, topRow);
|
|
|
|
getPane().setActivePane(STPane.Enum.forInt(activePane));
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void dumpDrawingRecords(boolean fat) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getAlternateExpression() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getAlternateFormula() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getAutobreaks() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypePageSetUpPr().getAutoPageBreaks();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public Comment getCellComment(int row, int column) {
|
2008-03-08 06:19:23 -05:00
|
|
|
return getComments().findCellComment(row, column);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
2008-04-05 17:43:53 -04:00
|
|
|
|
|
|
|
public Hyperlink getHyperlink(int row, int column) {
|
|
|
|
String ref = new CellReference(row, column).formatAsString();
|
|
|
|
for(XSSFHyperlink hyperlink : hyperlinks) {
|
|
|
|
if(hyperlink.getCellRef().equals(ref)) {
|
|
|
|
return hyperlink;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return null;
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
Merged revisions 638786-638802,638805-638811,638813-638814,638816-639230,639233-639241,639243-639253,639255-639486,639488-639601,639603-639835,639837-639917,639919-640056,640058-640710,640712-641156,641158-641184,641186-641795,641797-641798,641800-641933,641935-641963,641965-641966,641968-641995,641997-642230,642232-642562,642564-642565,642568-642570,642572-642573,642576-642736,642739-642877,642879,642881-642890,642892-642903,642905-642945,642947-643624,643626-643653,643655-643669,643671,643673-643830,643832-643833,643835-644342,644344-644472,644474-644508,644510-645347,645349-645351,645353-645559,645561-645565,645568-645951,645953-646193,646195-646311,646313-646404,646406-646665,646667-646853,646855-646869,646871-647151,647153-647185,647187-647277,647279-647566,647568-647573,647575,647578-647711,647714-647737,647739-647823,647825-648155,648157-648202,648204-648273,648275,648277-648302,648304-648333,648335-648588,648590-648622,648625-648673,648675-649141,649144,649146-649556,649558-649795,649799,649801-649910,649912-649913,649915-650128,650131-650132,650134-650137,650140-650914,650916-651991,651993-652284,652286-652287,652289,652291,652293-652297,652299-652328,652330-652425,652427-652445,652447-652560,652562-652933,652935,652937-652993,652995-653116,653118-653124,653126-653483,653487-653519,653522-653550,653552-653607,653609-653667,653669-653674,653676-653814,653817-653830,653832-653891,653893-653944,653946-654055,654057-654355,654357-654365,654367-654648,654651-655215,655217-655277,655279-655281,655283-655911,655913-656212,656214,656216-656251,656253-656698,656700-656756,656758-656892,656894-657135,657137-657165,657168-657179,657181-657354,657356-657357,657359-657701,657703-657874,657876-658032,658034-658284,658286,658288-658301,658303-658307,658309-658321,658323-658335,658337-658348,658351,658353-658832,658834-658983,658985,658987-659066,659068-659402,659404-659428,659430-659451,659453-659454,659456-659461,659463-659477,659479-659524,659526-659571,659574,659576-660255,660257-660262,660264-660279,660281-660343,660345-660473,660475-660827,660829-660833,660835-660888,660890-663321,663323-663435,663437-663764,663766-663854,663856-664219,664221-664489,664494-664514,664516-668013,668015-668142,668144-668152,668154,668156-668256,668258,668260-669139,669141-669455,669457-669657,669659-669808,669810-670189,670191-671321,671323-672229,672231-672549,672551-672552,672554-672561,672563-672566,672568,672571-673049,673051-673852,673854-673862,673864-673986,673988-673996,673998-674347,674349-674890,674892-674910,674912-674936,674938-674952,674954-675078,675080-675085,675087-675217,675219-675660,675662-675670,675672-675716,675718-675726,675728-675733,675735-675775,675777-675782,675784,675786-675791,675794-675852,675854-676200,676202,676204,676206-676220,676222-676309,676311-676456,676458-676994,676996-677027,677030-677040,677042-677056,677058-677375,677377-677968,677970-677971,677973,677975-677994,677996-678286,678288-678538,678540-680393,680395-680469,680471-680529,680531-680852,680854-681529,681531-681571,681573-682224,682226,682228,682231-682281,682283-682335,682337-682507,682509,682512-682517,682519-682532,682534-682619,682622-682777,682779-682998,683000-683019,683021-683286 via svnmerge from
https://svn.apache.org/repos/asf/poi/trunk
........
r683023 | josh | 2008-08-06 00:03:33 +0100 (Wed, 06 Aug 2008) | 1 line
Fix JDK 1.4 compilation (after r682511 /bug 45538)
........
r683081 | josh | 2008-08-06 02:39:44 +0100 (Wed, 06 Aug 2008) | 1 line
refactoring aggregate records to a separate hierarchy. just starting
........
r683093 | josh | 2008-08-06 04:06:18 +0100 (Wed, 06 Aug 2008) | 1 line
should have been submitted with r683081
........
r683096 | josh | 2008-08-06 04:23:10 +0100 (Wed, 06 Aug 2008) | 1 line
should have been submitted with r683081
........
r683128 | josh | 2008-08-06 07:20:59 +0100 (Wed, 06 Aug 2008) | 1 line
removed TODO comment and formatted
........
r683132 | josh | 2008-08-06 07:27:39 +0100 (Wed, 06 Aug 2008) | 1 line
Partial fix for bug 45570 - Converted instance BitField fields to static
........
r683167 | josh | 2008-08-06 09:42:40 +0100 (Wed, 06 Aug 2008) | 1 line
Added conditional format records to BiffViewer
........
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@683670 13f79535-47bb-0310-9956-ffa450edef68
2008-08-07 14:21:32 -04:00
|
|
|
public int[] getColumnBreaks() {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
2008-01-29 08:32:48 -05:00
|
|
|
if (brkArray.length == 0) {
|
|
|
|
return null;
|
|
|
|
}
|
Merged revisions 638786-638802,638805-638811,638813-638814,638816-639230,639233-639241,639243-639253,639255-639486,639488-639601,639603-639835,639837-639917,639919-640056,640058-640710,640712-641156,641158-641184,641186-641795,641797-641798,641800-641933,641935-641963,641965-641966,641968-641995,641997-642230,642232-642562,642564-642565,642568-642570,642572-642573,642576-642736,642739-642877,642879,642881-642890,642892-642903,642905-642945,642947-643624,643626-643653,643655-643669,643671,643673-643830,643832-643833,643835-644342,644344-644472,644474-644508,644510-645347,645349-645351,645353-645559,645561-645565,645568-645951,645953-646193,646195-646311,646313-646404,646406-646665,646667-646853,646855-646869,646871-647151,647153-647185,647187-647277,647279-647566,647568-647573,647575,647578-647711,647714-647737,647739-647823,647825-648155,648157-648202,648204-648273,648275,648277-648302,648304-648333,648335-648588,648590-648622,648625-648673,648675-649141,649144,649146-649556,649558-649795,649799,649801-649910,649912-649913,649915-650128,650131-650132,650134-650137,650140-650914,650916-651991,651993-652284,652286-652287,652289,652291,652293-652297,652299-652328,652330-652425,652427-652445,652447-652560,652562-652933,652935,652937-652993,652995-653116,653118-653124,653126-653483,653487-653519,653522-653550,653552-653607,653609-653667,653669-653674,653676-653814,653817-653830,653832-653891,653893-653944,653946-654055,654057-654355,654357-654365,654367-654648,654651-655215,655217-655277,655279-655281,655283-655911,655913-656212,656214,656216-656251,656253-656698,656700-656756,656758-656892,656894-657135,657137-657165,657168-657179,657181-657354,657356-657357,657359-657701,657703-657874,657876-658032,658034-658284,658286,658288-658301,658303-658307,658309-658321,658323-658335,658337-658348,658351,658353-658832,658834-658983,658985,658987-659066,659068-659402,659404-659428,659430-659451,659453-659454,659456-659461,659463-659477,659479-659524,659526-659571,659574,659576-660255,660257-660262,660264-660279,660281-660343,660345-660473,660475-660827,660829-660833,660835-660888,660890-663321,663323-663435,663437-663764,663766-663854,663856-664219,664221-664489,664494-664514,664516-668013,668015-668142,668144-668152,668154,668156-668256,668258,668260-669139,669141-669455,669457-669657,669659-669808,669810-670189,670191-671321,671323-672229,672231-672549,672551-672552,672554-672561,672563-672566,672568,672571-673049,673051-673852,673854-673862,673864-673986,673988-673996,673998-674347,674349-674890,674892-674910,674912-674936,674938-674952,674954-675078,675080-675085,675087-675217,675219-675660,675662-675670,675672-675716,675718-675726,675728-675733,675735-675775,675777-675782,675784,675786-675791,675794-675852,675854-676200,676202,676204,676206-676220,676222-676309,676311-676456,676458-676994,676996-677027,677030-677040,677042-677056,677058-677375,677377-677968,677970-677971,677973,677975-677994,677996-678286,678288-678538,678540-680393,680395-680469,680471-680529,680531-680852,680854-681529,681531-681571,681573-682224,682226,682228,682231-682281,682283-682335,682337-682507,682509,682512-682517,682519-682532,682534-682619,682622-682777,682779-682998,683000-683019,683021-683286 via svnmerge from
https://svn.apache.org/repos/asf/poi/trunk
........
r683023 | josh | 2008-08-06 00:03:33 +0100 (Wed, 06 Aug 2008) | 1 line
Fix JDK 1.4 compilation (after r682511 /bug 45538)
........
r683081 | josh | 2008-08-06 02:39:44 +0100 (Wed, 06 Aug 2008) | 1 line
refactoring aggregate records to a separate hierarchy. just starting
........
r683093 | josh | 2008-08-06 04:06:18 +0100 (Wed, 06 Aug 2008) | 1 line
should have been submitted with r683081
........
r683096 | josh | 2008-08-06 04:23:10 +0100 (Wed, 06 Aug 2008) | 1 line
should have been submitted with r683081
........
r683128 | josh | 2008-08-06 07:20:59 +0100 (Wed, 06 Aug 2008) | 1 line
removed TODO comment and formatted
........
r683132 | josh | 2008-08-06 07:27:39 +0100 (Wed, 06 Aug 2008) | 1 line
Partial fix for bug 45570 - Converted instance BitField fields to static
........
r683167 | josh | 2008-08-06 09:42:40 +0100 (Wed, 06 Aug 2008) | 1 line
Added conditional format records to BiffViewer
........
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@683670 13f79535-47bb-0310-9956-ffa450edef68
2008-08-07 14:21:32 -04:00
|
|
|
int[] breaks = new int[brkArray.length];
|
2008-01-29 08:32:48 -05:00
|
|
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
|
|
|
CTBreak brk = brkArray[i];
|
Merged revisions 638786-638802,638805-638811,638813-638814,638816-639230,639233-639241,639243-639253,639255-639486,639488-639601,639603-639835,639837-639917,639919-640056,640058-640710,640712-641156,641158-641184,641186-641795,641797-641798,641800-641933,641935-641963,641965-641966,641968-641995,641997-642230,642232-642562,642564-642565,642568-642570,642572-642573,642576-642736,642739-642877,642879,642881-642890,642892-642903,642905-642945,642947-643624,643626-643653,643655-643669,643671,643673-643830,643832-643833,643835-644342,644344-644472,644474-644508,644510-645347,645349-645351,645353-645559,645561-645565,645568-645951,645953-646193,646195-646311,646313-646404,646406-646665,646667-646853,646855-646869,646871-647151,647153-647185,647187-647277,647279-647566,647568-647573,647575,647578-647711,647714-647737,647739-647823,647825-648155,648157-648202,648204-648273,648275,648277-648302,648304-648333,648335-648588,648590-648622,648625-648673,648675-649141,649144,649146-649556,649558-649795,649799,649801-649910,649912-649913,649915-650128,650131-650132,650134-650137,650140-650914,650916-651991,651993-652284,652286-652287,652289,652291,652293-652297,652299-652328,652330-652425,652427-652445,652447-652560,652562-652933,652935,652937-652993,652995-653116,653118-653124,653126-653483,653487-653519,653522-653550,653552-653607,653609-653667,653669-653674,653676-653814,653817-653830,653832-653891,653893-653944,653946-654055,654057-654355,654357-654365,654367-654648,654651-655215,655217-655277,655279-655281,655283-655911,655913-656212,656214,656216-656251,656253-656698,656700-656756,656758-656892,656894-657135,657137-657165,657168-657179,657181-657354,657356-657357,657359-657701,657703-657874,657876-658032,658034-658284,658286,658288-658301,658303-658307,658309-658321,658323-658335,658337-658348,658351,658353-658832,658834-658983,658985,658987-659066,659068-659402,659404-659428,659430-659451,659453-659454,659456-659461,659463-659477,659479-659524,659526-659571,659574,659576-660255,660257-660262,660264-660279,660281-660343,660345-660473,660475-660827,660829-660833,660835-660888,660890-663321,663323-663435,663437-663764,663766-663854,663856-664219,664221-664489,664494-664514,664516-668013,668015-668142,668144-668152,668154,668156-668256,668258,668260-669139,669141-669455,669457-669657,669659-669808,669810-670189,670191-671321,671323-672229,672231-672549,672551-672552,672554-672561,672563-672566,672568,672571-673049,673051-673852,673854-673862,673864-673986,673988-673996,673998-674347,674349-674890,674892-674910,674912-674936,674938-674952,674954-675078,675080-675085,675087-675217,675219-675660,675662-675670,675672-675716,675718-675726,675728-675733,675735-675775,675777-675782,675784,675786-675791,675794-675852,675854-676200,676202,676204,676206-676220,676222-676309,676311-676456,676458-676994,676996-677027,677030-677040,677042-677056,677058-677375,677377-677968,677970-677971,677973,677975-677994,677996-678286,678288-678538,678540-680393,680395-680469,680471-680529,680531-680852,680854-681529,681531-681571,681573-682224,682226,682228,682231-682281,682283-682335,682337-682507,682509,682512-682517,682519-682532,682534-682619,682622-682777,682779-682998,683000-683019,683021-683286 via svnmerge from
https://svn.apache.org/repos/asf/poi/trunk
........
r683023 | josh | 2008-08-06 00:03:33 +0100 (Wed, 06 Aug 2008) | 1 line
Fix JDK 1.4 compilation (after r682511 /bug 45538)
........
r683081 | josh | 2008-08-06 02:39:44 +0100 (Wed, 06 Aug 2008) | 1 line
refactoring aggregate records to a separate hierarchy. just starting
........
r683093 | josh | 2008-08-06 04:06:18 +0100 (Wed, 06 Aug 2008) | 1 line
should have been submitted with r683081
........
r683096 | josh | 2008-08-06 04:23:10 +0100 (Wed, 06 Aug 2008) | 1 line
should have been submitted with r683081
........
r683128 | josh | 2008-08-06 07:20:59 +0100 (Wed, 06 Aug 2008) | 1 line
removed TODO comment and formatted
........
r683132 | josh | 2008-08-06 07:27:39 +0100 (Wed, 06 Aug 2008) | 1 line
Partial fix for bug 45570 - Converted instance BitField fields to static
........
r683167 | josh | 2008-08-06 09:42:40 +0100 (Wed, 06 Aug 2008) | 1 line
Added conditional format records to BiffViewer
........
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@683670 13f79535-47bb-0310-9956-ffa450edef68
2008-08-07 14:21:32 -04:00
|
|
|
breaks[i] = (int)brk.getId();
|
2008-01-29 08:32:48 -05:00
|
|
|
}
|
|
|
|
return breaks;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTPageBreak getSheetTypeColumnBreaks() {
|
|
|
|
if (worksheet.getColBreaks() == null) {
|
|
|
|
worksheet.setColBreaks(CTPageBreak.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getColBreaks();
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public short getColumnWidth(short column) {
|
2008-04-10 03:35:47 -04:00
|
|
|
return (short) columnHelper.getColumn(column, false).getWidth();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public short getDefaultColumnWidth() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return (short) getSheetTypeSheetFormatPr().getDefaultColWidth();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public short getDefaultRowHeight() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return (short) (getSheetTypeSheetFormatPr().getDefaultRowHeight() * 20);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTSheetFormatPr getSheetTypeSheetFormatPr() {
|
|
|
|
if (worksheet.getSheetFormatPr() == null) {
|
|
|
|
worksheet.setSheetFormatPr(CTSheetFormatPr.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getSheetFormatPr();
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public float getDefaultRowHeightInPoints() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return (short) getSheetTypeSheetFormatPr().getDefaultRowHeight();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getDialog() {
|
2008-02-29 09:18:06 -05:00
|
|
|
if (dialogsheet != null) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
return false;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getDisplayGuts() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getFirstRowNum() {
|
2008-01-29 08:32:48 -05:00
|
|
|
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
|
|
|
|
Row row = it.next();
|
|
|
|
if (row != null) {
|
|
|
|
return row.getRowNum();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return -1;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getFitToPage() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypePageSetUpPr().getFitToPage();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-07 04:24:49 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTHeaderFooter getSheetTypeHeaderFooter() {
|
|
|
|
if (worksheet.getHeaderFooter() == null) {
|
|
|
|
worksheet.setHeaderFooter(CTHeaderFooter.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getHeaderFooter();
|
|
|
|
}
|
2008-02-07 04:24:49 -05:00
|
|
|
|
2008-08-05 06:22:13 -04:00
|
|
|
/**
|
|
|
|
* Returns the default footer for the sheet,
|
|
|
|
* creating one as needed.
|
|
|
|
* You may also want to look at
|
|
|
|
* {@link #getFirstFooter()},
|
|
|
|
* {@link #getOddFooter()} and
|
|
|
|
* {@link #getEvenFooter()}
|
|
|
|
*/
|
|
|
|
public Footer getFooter() {
|
|
|
|
// The default footer is an odd footer
|
|
|
|
return getOddFooter();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the default header for the sheet,
|
|
|
|
* creating one as needed.
|
|
|
|
* You may also want to look at
|
|
|
|
* {@link #getFirstHeader()},
|
|
|
|
* {@link #getOddHeader()} and
|
|
|
|
* {@link #getEvenHeader()}
|
|
|
|
*/
|
|
|
|
public Header getHeader() {
|
|
|
|
// The default header is an odd header
|
|
|
|
return getOddHeader();
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the odd footer. Used on all pages unless
|
|
|
|
* other footers also present, when used on only
|
|
|
|
* odd pages.
|
|
|
|
*/
|
|
|
|
public Footer getOddFooter() {
|
|
|
|
return new XSSFOddFooter(getSheetTypeHeaderFooter());
|
|
|
|
}
|
|
|
|
/**
|
|
|
|
* Returns the even footer. Not there by default, but
|
|
|
|
* when set, used on even pages.
|
|
|
|
*/
|
2008-02-07 04:24:49 -05:00
|
|
|
public Footer getEvenFooter() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return new XSSFEvenFooter(getSheetTypeHeaderFooter());
|
2008-02-07 04:24:49 -05:00
|
|
|
}
|
2008-08-05 06:22:13 -04:00
|
|
|
/**
|
|
|
|
* Returns the first page footer. Not there by
|
|
|
|
* default, but when set, used on the first page.
|
|
|
|
*/
|
2008-02-07 04:24:49 -05:00
|
|
|
public Footer getFirstFooter() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return new XSSFFirstFooter(getSheetTypeHeaderFooter());
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-08-05 06:22:13 -04:00
|
|
|
/**
|
|
|
|
* Returns the odd header. Used on all pages unless
|
|
|
|
* other headers also present, when used on only
|
|
|
|
* odd pages.
|
|
|
|
*/
|
2008-02-07 04:24:49 -05:00
|
|
|
public Header getOddHeader() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return new XSSFOddHeader(getSheetTypeHeaderFooter());
|
2008-02-07 04:24:49 -05:00
|
|
|
}
|
2008-08-05 06:22:13 -04:00
|
|
|
/**
|
|
|
|
* Returns the even header. Not there by default, but
|
|
|
|
* when set, used on even pages.
|
|
|
|
*/
|
2008-02-07 04:24:49 -05:00
|
|
|
public Header getEvenHeader() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return new XSSFEvenHeader(getSheetTypeHeaderFooter()
|
2008-02-07 04:24:49 -05:00
|
|
|
);
|
|
|
|
}
|
2008-08-05 06:22:13 -04:00
|
|
|
/**
|
|
|
|
* Returns the first page header. Not there by
|
|
|
|
* default, but when set, used on the first page.
|
|
|
|
*/
|
2008-02-07 04:24:49 -05:00
|
|
|
public Header getFirstHeader() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return new XSSFFirstHeader(getSheetTypeHeaderFooter());
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-08-05 06:22:13 -04:00
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public boolean getHorizontallyCenter() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypePrintOptions().getHorizontalCentered();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTPrintOptions getSheetTypePrintOptions() {
|
|
|
|
if (worksheet.getPrintOptions() == null) {
|
|
|
|
worksheet.setPrintOptions(CTPrintOptions.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getPrintOptions();
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public int getLastRowNum() {
|
2008-01-29 08:32:48 -05:00
|
|
|
int lastRowNum = -1;
|
|
|
|
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
|
|
|
|
Row row = it.next();
|
|
|
|
if (row != null) {
|
|
|
|
lastRowNum = row.getRowNum();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return lastRowNum;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public short getLeftCol() {
|
2008-02-29 09:18:06 -05:00
|
|
|
String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell();
|
|
|
|
CellReference cellReference = new CellReference(cellRef);
|
2008-04-05 13:42:10 -04:00
|
|
|
return (short)cellReference.getCol();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public double getMargin(short margin) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTPageMargins pageMargins = getSheetTypePageMargins();
|
2008-02-07 04:24:49 -05:00
|
|
|
switch (margin) {
|
|
|
|
case LeftMargin:
|
|
|
|
return pageMargins.getLeft();
|
|
|
|
case RightMargin:
|
|
|
|
return pageMargins.getRight();
|
|
|
|
case TopMargin:
|
|
|
|
return pageMargins.getTop();
|
|
|
|
case BottomMargin:
|
|
|
|
return pageMargins.getBottom();
|
|
|
|
case HeaderMargin:
|
|
|
|
return pageMargins.getHeader();
|
|
|
|
case FooterMargin:
|
|
|
|
return pageMargins.getFooter();
|
|
|
|
default :
|
|
|
|
throw new RuntimeException( "Unknown margin constant: " + margin );
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTPageMargins getSheetTypePageMargins() {
|
|
|
|
if (worksheet.getPageMargins() == null) {
|
|
|
|
worksheet.setPageMargins(CTPageMargins.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getPageMargins();
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public Region getMergedRegionAt(int index) {
|
2008-04-07 16:31:43 -04:00
|
|
|
CTMergeCell ctMergeCell = getMergedCells().getMergeCellArray(index);
|
|
|
|
return new Region(ctMergeCell.getRef());
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public int getNumMergedRegions() {
|
2008-04-07 16:31:43 -04:00
|
|
|
return getMergedCells().sizeOfMergeCellArray();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
2008-04-05 17:43:53 -04:00
|
|
|
|
|
|
|
public int getNumHyperlinks() {
|
|
|
|
return hyperlinks.size();
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
public boolean getObjectProtect() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public PaneInformation getPaneInformation() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public short getPassword() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int getPhysicalNumberOfRows() {
|
2008-01-29 08:32:48 -05:00
|
|
|
int counter = 0;
|
|
|
|
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
|
|
|
|
if (it.next() != null) {
|
|
|
|
counter++;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return counter;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public PrintSetup getPrintSetup() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getProtect() {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public Row getRow(int rownum) {
|
2008-01-22 08:28:48 -05:00
|
|
|
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
|
|
|
|
Row row = it.next();
|
|
|
|
if (row.getRowNum() == rownum) {
|
|
|
|
return row;
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
|
|
|
public int[] getRowBreaks() {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTPageBreak rowBreaks = getSheetTypeRowBreaks();
|
2008-01-29 08:32:48 -05:00
|
|
|
int breaksCount = rowBreaks.getBrkArray().length;
|
|
|
|
if (breaksCount == 0) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
int[] breaks = new int[breaksCount];
|
|
|
|
for (int i = 0 ; i < breaksCount ; i++) {
|
|
|
|
CTBreak brk = rowBreaks.getBrkArray(i);
|
|
|
|
breaks[i] = (int) brk.getId();
|
|
|
|
}
|
|
|
|
return breaks;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTPageBreak getSheetTypeRowBreaks() {
|
|
|
|
if (worksheet.getRowBreaks() == null) {
|
|
|
|
worksheet.setRowBreaks(CTPageBreak.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getRowBreaks();
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public boolean getRowSumsBelow() {
|
2008-09-11 11:11:57 -04:00
|
|
|
CTSheetPr sheetPr = getSheetTypeSheetPr();
|
|
|
|
CTOutlinePr outLinePr = sheetPr.getOutlinePr();
|
|
|
|
return outLinePr.getSummaryBelow();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getRowSumsRight() {
|
2008-09-11 11:11:57 -04:00
|
|
|
CTSheetPr sheetPr = getSheetTypeSheetPr();
|
|
|
|
CTOutlinePr outLinePr = sheetPr.getOutlinePr();
|
|
|
|
return outLinePr.getSummaryRight();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getScenarioProtect() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypeProtection().getScenarios();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTSheetProtection getSheetTypeProtection() {
|
|
|
|
if (worksheet.getSheetProtection() == null) {
|
|
|
|
worksheet.setSheetProtection(CTSheetProtection.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getSheetProtection();
|
|
|
|
}
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public short getTopRow() {
|
2008-02-29 09:18:06 -05:00
|
|
|
String cellRef = getSheetTypeSheetView().getTopLeftCell();
|
|
|
|
CellReference cellReference = new CellReference(cellRef);
|
|
|
|
return (short) cellReference.getRow();
|
|
|
|
}
|
|
|
|
|
|
|
|
// Right signature method. Remove the wrong one when it will be removed in HSSFSheet (and interface)
|
|
|
|
public boolean getVerticallyCenter() {
|
|
|
|
return getVerticallyCenter(true);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean getVerticallyCenter(boolean value) {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypePrintOptions().getVerticalCentered();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-09-11 11:11:57 -04:00
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
public void groupColumn(short fromColumn, short toColumn) {
|
2008-09-11 11:11:57 -04:00
|
|
|
CTCols ctCols=worksheet.getColsArray(0);
|
|
|
|
CTCol ctCol=CTCol.Factory.newInstance();
|
|
|
|
ctCol.setMin(fromColumn);
|
|
|
|
ctCol.setMax(toColumn);
|
|
|
|
this.columnHelper.addCleanColIntoCols(ctCols, ctCol);
|
|
|
|
for(int index=fromColumn;index<=toColumn;index++){
|
|
|
|
CTCol col=columnHelper.getColumn(index, false);
|
|
|
|
//col must exist
|
|
|
|
short outlineLevel=col.getOutlineLevel();
|
|
|
|
col.setOutlineLevel((short)(outlineLevel+1));
|
|
|
|
index=(int)col.getMax();
|
|
|
|
}
|
|
|
|
worksheet.setColsArray(0,ctCols);
|
|
|
|
setSheetFormatPrOutlineLevelCol();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void groupRow(int fromRow, int toRow) {
|
2008-09-11 11:11:57 -04:00
|
|
|
for(int i=fromRow;i<=toRow;i++){
|
|
|
|
XSSFRow xrow=(XSSFRow)getRow(i-1);
|
|
|
|
if(xrow==null){//create a new Row
|
|
|
|
xrow=(XSSFRow)createRow(i-1);
|
|
|
|
}
|
|
|
|
CTRow ctrow=xrow.getCTRow();
|
|
|
|
short outlineLevel=ctrow.getOutlineLevel();
|
|
|
|
ctrow.setOutlineLevel((short)(outlineLevel+1));
|
|
|
|
}
|
|
|
|
setSheetFormatPrOutlineLevelRow();
|
|
|
|
}
|
|
|
|
|
|
|
|
private short getMaxOutlineLevelRows(){
|
|
|
|
short outlineLevel=0;
|
|
|
|
for(Row r:rows){
|
|
|
|
XSSFRow xrow=(XSSFRow)r;
|
|
|
|
outlineLevel=xrow.getCTRow().getOutlineLevel()>outlineLevel? xrow.getCTRow().getOutlineLevel(): outlineLevel;
|
|
|
|
}
|
|
|
|
return outlineLevel;
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
2008-09-11 11:11:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
private short getMaxOutlineLevelCols(){
|
|
|
|
CTCols ctCols=worksheet.getColsArray(0);
|
|
|
|
CTCol[]colArray=ctCols.getColArray();
|
|
|
|
short outlineLevel=0;
|
|
|
|
for(CTCol col: colArray){
|
|
|
|
outlineLevel=col.getOutlineLevel()>outlineLevel? col.getOutlineLevel(): outlineLevel;
|
|
|
|
}
|
|
|
|
return outlineLevel;
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
public boolean isColumnBroken(short column) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
2008-01-29 08:32:48 -05:00
|
|
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
|
|
|
if (brkArray[i].getId() == column) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isColumnHidden(short column) {
|
2008-04-10 03:35:47 -04:00
|
|
|
return columnHelper.getColumn(column, false).getHidden();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isDisplayFormulas() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypeSheetView().getShowFormulas();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isDisplayGridlines() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypeSheetView().getShowGridLines();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isDisplayRowColHeadings() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypeSheetView().getShowRowColHeaders();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isGridsPrinted() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return isPrintGridlines();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isPrintGridlines() {
|
2008-02-29 09:18:06 -05:00
|
|
|
return getSheetTypePrintOptions().getGridLines();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public boolean isRowBroken(int row) {
|
2008-01-29 08:32:48 -05:00
|
|
|
int[] rowBreaks = getRowBreaks();
|
|
|
|
if (rowBreaks == null) {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
for (int i = 0 ; i < rowBreaks.length ; i++) {
|
|
|
|
if (rowBreaks[i] == row) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
|
|
|
public void protectSheet(String password) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void removeColumnBreak(short column) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
2008-01-29 08:32:48 -05:00
|
|
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
|
|
|
if (brkArray[i].getId() == column) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeColumnBreaks().removeBrk(i);
|
2008-01-29 08:32:48 -05:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void removeMergedRegion(int index) {
|
2008-04-09 16:50:55 -04:00
|
|
|
CTMergeCell[] mergeCellsArray = new CTMergeCell[getMergedCells().sizeOfMergeCellArray() - 1];
|
|
|
|
for (int i = 0 ; i < getMergedCells().sizeOfMergeCellArray() ; i++) {
|
|
|
|
if (i < index) {
|
|
|
|
mergeCellsArray[i] = getMergedCells().getMergeCellArray(i);
|
|
|
|
}
|
|
|
|
else if (i > index) {
|
|
|
|
mergeCellsArray[i - 1] = getMergedCells().getMergeCellArray(i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
getMergedCells().setMergeCellArray(mergeCellsArray);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void removeRow(Row row) {
|
2008-01-29 08:32:48 -05:00
|
|
|
int counter = 0;
|
2008-09-11 11:11:57 -04:00
|
|
|
int rowNum=row.getRowNum();
|
2008-01-29 08:32:48 -05:00
|
|
|
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
|
|
|
|
Row r = it.next();
|
2008-09-11 11:11:57 -04:00
|
|
|
if (r.getRowNum() == rowNum) {
|
2008-01-29 08:32:48 -05:00
|
|
|
it.remove();
|
|
|
|
worksheet.getSheetData().removeRow(counter);
|
|
|
|
}
|
|
|
|
counter++;
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void removeRowBreak(int row) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTBreak[] brkArray = getSheetTypeRowBreaks().getBrkArray();
|
2008-01-29 08:32:48 -05:00
|
|
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
|
|
|
if (brkArray[i].getId() == row) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeRowBreaks().removeBrk(i);
|
2008-01-29 08:32:48 -05:00
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-01-22 08:28:48 -05:00
|
|
|
public Iterator<Row> rowIterator() {
|
|
|
|
return rows.iterator();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
2008-02-05 10:41:37 -05:00
|
|
|
/**
|
|
|
|
* Alias for {@link #rowIterator()} to
|
|
|
|
* allow foreach loops
|
|
|
|
*/
|
|
|
|
public Iterator<Row> iterator() {
|
|
|
|
return rowIterator();
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
public void setAlternativeExpression(boolean b) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setAlternativeFormula(boolean b) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setAutobreaks(boolean b) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypePageSetUpPr().setAutoPageBreaks(b);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setColumnBreak(short column) {
|
2008-01-29 08:32:48 -05:00
|
|
|
if (! isColumnBroken(column)) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTBreak brk = getSheetTypeColumnBreaks().addNewBrk();
|
2008-01-29 08:32:48 -05:00
|
|
|
brk.setId(column);
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setColumnGroupCollapsed(short columnNumber, boolean collapsed) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setColumnHidden(short column, boolean hidden) {
|
2008-02-29 09:18:06 -05:00
|
|
|
columnHelper.setColHidden(column, hidden);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setColumnWidth(short column, short width) {
|
2008-02-29 09:18:06 -05:00
|
|
|
columnHelper.setColWidth(column, width);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setDefaultColumnStyle(short column, CellStyle style) {
|
2008-04-10 03:35:47 -04:00
|
|
|
columnHelper.setColDefaultStyle(column, style);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setDefaultColumnWidth(short width) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeSheetFormatPr().setDefaultColWidth((double) width);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setDefaultRowHeight(short height) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeSheetFormatPr().setDefaultRowHeight(height / 20);
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDefaultRowHeightInPoints(float height) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeSheetFormatPr().setDefaultRowHeight(height);
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDialog(boolean b) {
|
2008-09-11 11:11:57 -04:00
|
|
|
if(b && dialogsheet == null){
|
|
|
|
CTDialogsheet dialogSheet = CTDialogsheet.Factory.newInstance();
|
|
|
|
dialogsheet = dialogSheet;
|
|
|
|
}else{
|
|
|
|
dialogsheet = null;
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setDisplayFormulas(boolean show) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeSheetView().setShowFormulas(show);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
protected CTSheetView getSheetTypeSheetView() {
|
|
|
|
if (getDefaultSheetView() == null) {
|
|
|
|
getSheetTypeSheetViews().setSheetViewArray(0, CTSheetView.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return getDefaultSheetView();
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setDisplayGridlines(boolean show) {
|
|
|
|
getSheetTypeSheetView().setShowGridLines(show);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setDisplayGuts(boolean b) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setDisplayRowColHeadings(boolean show) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeSheetView().setShowRowColHeaders(show);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setFitToPage(boolean b) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypePageSetUpPr().setFitToPage(b);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setGridsPrinted(boolean value) {
|
2008-02-29 09:18:06 -05:00
|
|
|
setPrintGridlines(value);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setHorizontallyCenter(boolean value) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypePrintOptions().setHorizontalCentered(value);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setMargin(short margin, double size) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTPageMargins pageMargins = getSheetTypePageMargins();
|
2008-02-07 04:24:49 -05:00
|
|
|
switch (margin) {
|
|
|
|
case LeftMargin:
|
|
|
|
pageMargins.setLeft(size);
|
|
|
|
case RightMargin:
|
|
|
|
pageMargins.setRight(size);
|
|
|
|
case TopMargin:
|
|
|
|
pageMargins.setTop(size);
|
|
|
|
case BottomMargin:
|
|
|
|
pageMargins.setBottom(size);
|
|
|
|
case HeaderMargin:
|
|
|
|
pageMargins.setHeader(size);
|
|
|
|
case FooterMargin:
|
|
|
|
pageMargins.setFooter(size);
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setPrintGridlines(boolean newPrintGridlines) {
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypePrintOptions().setGridLines(newPrintGridlines);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setProtect(boolean protect) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setRowBreak(int row) {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTPageBreak pageBreak = getSheetTypeRowBreaks();
|
2008-01-29 08:32:48 -05:00
|
|
|
if (! isRowBroken(row)) {
|
|
|
|
CTBreak brk = pageBreak.addNewBrk();
|
|
|
|
brk.setId(row);
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setRowGroupCollapsed(int row, boolean collapse) {
|
|
|
|
// TODO Auto-generated method stub
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setRowSumsBelow(boolean b) {
|
2008-09-11 11:11:57 -04:00
|
|
|
CTSheetPr sheetPr = getSheetTypeSheetPr();
|
|
|
|
CTOutlinePr outLinePr = sheetPr.getOutlinePr();
|
|
|
|
outLinePr.setSummaryBelow(b);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void setRowSumsRight(boolean b) {
|
2008-09-11 11:11:57 -04:00
|
|
|
CTSheetPr sheetPr = getSheetTypeSheetPr();
|
|
|
|
CTOutlinePr outLinePr = sheetPr.getOutlinePr();
|
|
|
|
outLinePr.setSummaryRight(b);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setVerticallyCenter(boolean value) {
|
|
|
|
getSheetTypePrintOptions().setVerticalCentered(value);
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
// HSSFSheet compatibility methods. See also the following zoom related methods
|
|
|
|
public void setZoom(int numerator, int denominator) {
|
|
|
|
setZoom((numerator/denominator) * 100);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setZoom(long scale) {
|
|
|
|
getSheetTypeSheetView().setZoomScale(scale);
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setZoomNormal(long scale) {
|
|
|
|
getSheetTypeSheetView().setZoomScaleNormal(scale);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setZoomPageLayoutView(long scale) {
|
|
|
|
getSheetTypeSheetView().setZoomScalePageLayoutView(scale);
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setZoomSheetLayoutView(long scale) {
|
|
|
|
getSheetTypeSheetView().setZoomScaleSheetLayoutView(scale);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void shiftRows(int startRow, int endRow, int n) {
|
2008-03-07 13:23:52 -05:00
|
|
|
shiftRows(startRow, endRow, n, false, false);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void shiftRows(int startRow, int endRow, int n, boolean copyRowHeight, boolean resetOriginalRowHeight) {
|
2008-03-07 13:23:52 -05:00
|
|
|
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
|
|
|
|
Row row = it.next();
|
|
|
|
if (!copyRowHeight) {
|
|
|
|
row.setHeight((short)0);
|
|
|
|
}
|
|
|
|
if (resetOriginalRowHeight && getDefaultRowHeight() >= 0) {
|
|
|
|
row.setHeight(getDefaultRowHeight());
|
|
|
|
}
|
|
|
|
if (removeRow(startRow, endRow, n, row.getRowNum())) {
|
|
|
|
it.remove();
|
|
|
|
}
|
|
|
|
else if (row.getRowNum() >= startRow && row.getRowNum() <= endRow) {
|
|
|
|
row.setRowNum(row.getRowNum() + n);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2008-01-16 11:08:22 -05:00
|
|
|
|
|
|
|
public void showInPane(short toprow, short leftcol) {
|
2008-04-05 13:42:10 -04:00
|
|
|
CellReference cellReference = new CellReference(toprow, leftcol);
|
|
|
|
String cellRef = cellReference.formatAsString();
|
2008-02-29 09:18:06 -05:00
|
|
|
getSheetTypeSheetView().setTopLeftCell(cellRef);
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-09-11 11:11:57 -04:00
|
|
|
public void ungroupColumn(short fromColumn, short toColumn) {
|
|
|
|
CTCols cols=worksheet.getColsArray(0);
|
|
|
|
for(int index=fromColumn;index<=toColumn;index++){
|
|
|
|
CTCol col=columnHelper.getColumn(index, false);
|
|
|
|
if(col!=null){
|
|
|
|
short outlineLevel=col.getOutlineLevel();
|
|
|
|
col.setOutlineLevel((short)(outlineLevel-1));
|
|
|
|
index=(int)col.getMax();
|
|
|
|
|
|
|
|
if(col.getOutlineLevel()<=0){
|
|
|
|
int colIndex=columnHelper.getIndexOfColumn(cols,col);
|
|
|
|
worksheet.getColsArray(0).removeCol(colIndex);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
worksheet.setColsArray(0,cols);
|
|
|
|
setSheetFormatPrOutlineLevelCol();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
public void ungroupRow(int fromRow, int toRow) {
|
2008-09-11 11:11:57 -04:00
|
|
|
for(int i=fromRow;i<=toRow;i++){
|
|
|
|
XSSFRow xrow=(XSSFRow)getRow(i-1);
|
|
|
|
if(xrow!=null){
|
|
|
|
CTRow ctrow=xrow.getCTRow();
|
|
|
|
short outlinelevel=ctrow.getOutlineLevel();
|
|
|
|
ctrow.setOutlineLevel((short)(outlinelevel-1));
|
|
|
|
//remove a row only if the row has no cell and if the outline level is 0
|
|
|
|
if(ctrow.getOutlineLevel()==0 && xrow.getFirstCellNum()==-1){
|
|
|
|
removeRow(xrow);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
setSheetFormatPrOutlineLevelRow();
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|
|
|
|
|
2008-09-11 11:11:57 -04:00
|
|
|
private void setSheetFormatPrOutlineLevelRow(){
|
|
|
|
short maxLevelRow=getMaxOutlineLevelRows();
|
|
|
|
getSheetTypeSheetFormatPr().setOutlineLevelRow((short)(maxLevelRow));
|
|
|
|
}
|
|
|
|
|
|
|
|
private void setSheetFormatPrOutlineLevelCol(){
|
|
|
|
short maxLevelCol=getMaxOutlineLevelCols();
|
|
|
|
getSheetTypeSheetFormatPr().setOutlineLevelCol((short)(maxLevelCol));
|
|
|
|
}
|
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public void setSelected(boolean flag) {
|
|
|
|
CTSheetViews views = getSheetTypeSheetViews();
|
2008-01-22 08:28:48 -05:00
|
|
|
for (CTSheetView view : views.getSheetViewArray()) {
|
|
|
|
view.setTabSelected(flag);
|
|
|
|
}
|
|
|
|
}
|
2008-02-29 09:18:06 -05:00
|
|
|
|
|
|
|
protected CTSheetViews getSheetTypeSheetViews() {
|
|
|
|
if (worksheet.getSheetViews() == null) {
|
|
|
|
worksheet.setSheetViews(CTSheetViews.Factory.newInstance());
|
|
|
|
worksheet.getSheetViews().addNewSheetView();
|
|
|
|
}
|
|
|
|
return worksheet.getSheetViews();
|
|
|
|
}
|
2008-01-22 08:28:48 -05:00
|
|
|
|
2008-02-29 09:18:06 -05:00
|
|
|
public boolean isSelected() {
|
2008-01-22 08:28:48 -05:00
|
|
|
CTSheetView view = getDefaultSheetView();
|
|
|
|
return view != null && view.getTabSelected();
|
|
|
|
}
|
2008-03-08 06:19:23 -05:00
|
|
|
|
|
|
|
public void setCellComment(String cellRef, XSSFComment comment) {
|
2008-04-07 10:55:50 -04:00
|
|
|
CellReference cellReference = new CellReference(cellRef);
|
|
|
|
|
|
|
|
comment.setRow(cellReference.getRow());
|
|
|
|
comment.setColumn((short)cellReference.getCol());
|
2008-03-08 06:19:23 -05:00
|
|
|
}
|
|
|
|
|
2008-04-05 17:43:53 -04:00
|
|
|
public void setCellHyperlink(XSSFHyperlink hyperlink) {
|
|
|
|
hyperlinks.add(hyperlink);
|
|
|
|
}
|
|
|
|
|
2008-03-08 06:19:23 -05:00
|
|
|
public String getActiveCell() {
|
|
|
|
return getSheetTypeSelection().getActiveCell();
|
|
|
|
}
|
|
|
|
|
|
|
|
public void setActiveCell(String cellRef) {
|
|
|
|
getSheetTypeSelection().setActiveCell(cellRef);
|
|
|
|
}
|
2008-04-06 16:44:11 -04:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Does this sheet have any comments on it? We need to know,
|
|
|
|
* so we can decide about writing it to disk or not
|
|
|
|
*/
|
|
|
|
public boolean hasComments() {
|
|
|
|
if(sheetComments == null) { return false; }
|
|
|
|
return (sheetComments.getNumberOfComments() > 0);
|
|
|
|
}
|
2008-04-07 10:55:50 -04:00
|
|
|
protected int getNumberOfComments() {
|
|
|
|
if(sheetComments == null) { return 0; }
|
|
|
|
return sheetComments.getNumberOfComments();
|
|
|
|
}
|
2008-03-08 06:19:23 -05:00
|
|
|
|
|
|
|
private CTSelection getSheetTypeSelection() {
|
|
|
|
if (getSheetTypeSheetView().sizeOfSelectionArray() == 0) {
|
|
|
|
getSheetTypeSheetView().insertNewSelection(0);
|
|
|
|
}
|
|
|
|
return getSheetTypeSheetView().getSelectionArray(0);
|
|
|
|
}
|
2008-01-22 08:28:48 -05:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Return the default sheet view. This is the last one if the sheet's views, according to sec. 3.3.1.83
|
|
|
|
* of the OOXML spec: "A single sheet view definition. When more than 1 sheet view is defined in the file,
|
|
|
|
* it means that when opening the workbook, each sheet view corresponds to a separate window within the
|
|
|
|
* spreadsheet application, where each window is showing the particular sheet. containing the same
|
|
|
|
* workbookViewId value, the last sheetView definition is loaded, and the others are discarded.
|
|
|
|
* When multiple windows are viewing the same sheet, multiple sheetView elements (with corresponding
|
|
|
|
* workbookView entries) are saved."
|
|
|
|
*/
|
|
|
|
private CTSheetView getDefaultSheetView() {
|
2008-02-29 09:18:06 -05:00
|
|
|
CTSheetViews views = getSheetTypeSheetViews();
|
2008-01-22 08:28:48 -05:00
|
|
|
if (views == null || views.getSheetViewArray() == null || views.getSheetViewArray().length <= 0) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
return views.getSheetViewArray(views.getSheetViewArray().length - 1);
|
|
|
|
}
|
2008-01-23 10:52:59 -05:00
|
|
|
|
|
|
|
protected XSSFSheet cloneSheet() {
|
2008-02-29 09:18:06 -05:00
|
|
|
XSSFSheet newSheet = new XSSFSheet(this.workbook);
|
|
|
|
newSheet.setSheet((CTSheet)sheet.copy());
|
|
|
|
return newSheet;
|
2008-01-23 10:52:59 -05:00
|
|
|
}
|
2008-02-29 09:18:06 -05:00
|
|
|
|
|
|
|
private void setSheet(CTSheet sheet) {
|
|
|
|
this.sheet = sheet;
|
|
|
|
}
|
2008-03-08 06:19:23 -05:00
|
|
|
|
2008-03-31 19:15:38 -04:00
|
|
|
private CommentsSource getComments() {
|
2008-03-08 06:19:23 -05:00
|
|
|
if (sheetComments == null) {
|
2008-03-31 19:15:38 -04:00
|
|
|
sheetComments = new CommentsTable();
|
2008-03-08 06:19:23 -05:00
|
|
|
}
|
|
|
|
return sheetComments;
|
|
|
|
}
|
2008-04-02 20:23:59 -04:00
|
|
|
/**
|
|
|
|
* Returns the sheet's comments object if there is one,
|
|
|
|
* or null if not
|
|
|
|
*/
|
|
|
|
protected CommentsSource getCommentsSourceIfExists() {
|
|
|
|
return sheetComments;
|
|
|
|
}
|
2008-04-06 16:44:11 -04:00
|
|
|
|
|
|
|
private void addNewMergeCell(Region region) {
|
2008-04-07 16:31:43 -04:00
|
|
|
ctMergeCells = getMergedCells();
|
2008-04-06 16:44:11 -04:00
|
|
|
CTMergeCell ctMergeCell = ctMergeCells.addNewMergeCell();
|
|
|
|
ctMergeCell.setRef(region.getRegionRef());
|
2008-03-31 19:30:56 -04:00
|
|
|
}
|
2008-04-06 16:44:11 -04:00
|
|
|
|
2008-04-07 16:31:43 -04:00
|
|
|
private CTMergeCells getMergedCells() {
|
|
|
|
if (ctMergeCells == null) {
|
|
|
|
ctMergeCells = worksheet.addNewMergeCells();
|
|
|
|
}
|
|
|
|
return ctMergeCells;
|
|
|
|
}
|
|
|
|
|
2008-04-06 16:44:11 -04:00
|
|
|
private CTPageSetUpPr getSheetTypePageSetUpPr() {
|
|
|
|
if (getSheetTypeSheetPr().getPageSetUpPr() == null) {
|
|
|
|
getSheetTypeSheetPr().setPageSetUpPr(CTPageSetUpPr.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return getSheetTypeSheetPr().getPageSetUpPr();
|
|
|
|
}
|
|
|
|
|
|
|
|
protected CTSheetPr getSheetTypeSheetPr() {
|
|
|
|
if (worksheet.getSheetPr() == null) {
|
|
|
|
worksheet.setSheetPr(CTSheetPr.Factory.newInstance());
|
|
|
|
}
|
|
|
|
return worksheet.getSheetPr();
|
|
|
|
}
|
|
|
|
|
|
|
|
private boolean removeRow(int startRow, int endRow, int n, int rownum) {
|
|
|
|
if (rownum >= (startRow + n) && rownum <= (endRow + n)) {
|
|
|
|
if (n > 0 && rownum > endRow) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
else if (n < 0 && rownum < startRow) {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
return false;
|
|
|
|
}
|
2008-04-07 15:54:43 -04:00
|
|
|
|
|
|
|
private CTPane getPane() {
|
|
|
|
if (getDefaultSheetView().getPane() == null) {
|
|
|
|
getDefaultSheetView().addNewPane();
|
|
|
|
}
|
|
|
|
return getDefaultSheetView().getPane();
|
|
|
|
}
|
2008-09-11 11:11:57 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2008-01-16 11:08:22 -05:00
|
|
|
}
|