Applied patches for #44480, thanks to Paolo Mottadelli <p.mottadelli@sourcesense.com>, <paolo.moz@gmail.com>
git-svn-id: https://svn.apache.org/repos/asf/poi/branches/ooxml@632325 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8191f45e44
commit
88aa367ec3
@ -0,0 +1,108 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
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;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetUpPr;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPrintOptions;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews;
|
||||||
|
|
||||||
|
public class XSSFDialogsheet extends XSSFSheet implements Sheet{
|
||||||
|
|
||||||
|
public XSSFDialogsheet(CTSheet sheet, CTDialogsheet dialogsheet,
|
||||||
|
XSSFWorkbook workbook) {
|
||||||
|
super(sheet, null, workbook);
|
||||||
|
this.worksheet = null;
|
||||||
|
this.dialogsheet = dialogsheet;
|
||||||
|
if (this.dialogsheet == null) {
|
||||||
|
this.dialogsheet = CTDialogsheet.Factory.newInstance();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Row createRow(int rowNum) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTHeaderFooter getSheetTypeHeaderFooter() {
|
||||||
|
if (dialogsheet.getHeaderFooter() == null) {
|
||||||
|
dialogsheet.setHeaderFooter(CTHeaderFooter.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return dialogsheet.getHeaderFooter();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTSheetPr getSheetTypeSheetPr() {
|
||||||
|
if (dialogsheet.getSheetPr() == null) {
|
||||||
|
dialogsheet.setSheetPr(CTSheetPr.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return dialogsheet.getSheetPr();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTPageBreak getSheetTypeColumnBreaks() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTSheetFormatPr getSheetTypeSheetFormatPr() {
|
||||||
|
if (dialogsheet.getSheetFormatPr() == null) {
|
||||||
|
dialogsheet.setSheetFormatPr(CTSheetFormatPr.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return dialogsheet.getSheetFormatPr();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTPageMargins getSheetTypePageMargins() {
|
||||||
|
if (dialogsheet.getPageMargins() == null) {
|
||||||
|
dialogsheet.setPageMargins(CTPageMargins.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return dialogsheet.getPageMargins();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTPageBreak getSheetTypeRowBreaks() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTSheetViews getSheetTypeSheetViews() {
|
||||||
|
if (dialogsheet.getSheetViews() == null) {
|
||||||
|
dialogsheet.setSheetViews(CTSheetViews.Factory.newInstance());
|
||||||
|
dialogsheet.getSheetViews().addNewSheetView();
|
||||||
|
}
|
||||||
|
return dialogsheet.getSheetViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTPrintOptions getSheetTypePrintOptions() {
|
||||||
|
if (dialogsheet.getPrintOptions() == null) {
|
||||||
|
dialogsheet.setPrintOptions(CTPrintOptions.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return dialogsheet.getPrintOptions();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTSheetProtection getSheetTypeProtection() {
|
||||||
|
if (dialogsheet.getSheetProtection() == null) {
|
||||||
|
dialogsheet.setSheetProtection(CTSheetProtection.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return dialogsheet.getSheetProtection();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,7 +17,6 @@
|
|||||||
|
|
||||||
package org.apache.poi.xssf.usermodel;
|
package org.apache.poi.xssf.usermodel;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -29,21 +28,23 @@ import org.apache.poi.ss.usermodel.Comment;
|
|||||||
import org.apache.poi.ss.usermodel.Footer;
|
import org.apache.poi.ss.usermodel.Footer;
|
||||||
import org.apache.poi.ss.usermodel.Header;
|
import org.apache.poi.ss.usermodel.Header;
|
||||||
import org.apache.poi.ss.usermodel.Patriarch;
|
import org.apache.poi.ss.usermodel.Patriarch;
|
||||||
import org.apache.poi.ss.usermodel.PictureData;
|
|
||||||
import org.apache.poi.ss.usermodel.PrintSetup;
|
import org.apache.poi.ss.usermodel.PrintSetup;
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
||||||
|
import org.apache.poi.xssf.util.CellReference;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBreak;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBreak;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageBreak;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageMargins;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPageSetUpPr;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTPrintOptions;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTRow;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSelection;
|
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetPr;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetProtection;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetView;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetViews;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
||||||
@ -51,11 +52,12 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
|||||||
|
|
||||||
public class XSSFSheet implements Sheet {
|
public class XSSFSheet implements Sheet {
|
||||||
|
|
||||||
private CTSheet sheet;
|
protected CTSheet sheet;
|
||||||
private CTWorksheet worksheet;
|
protected CTWorksheet worksheet;
|
||||||
private List<Row> rows;
|
protected CTDialogsheet dialogsheet;
|
||||||
private ColumnHelper columnHelper;
|
protected List<Row> rows;
|
||||||
private XSSFWorkbook workbook;
|
protected ColumnHelper columnHelper;
|
||||||
|
protected XSSFWorkbook workbook;
|
||||||
|
|
||||||
public static final short LeftMargin = 0;
|
public static final short LeftMargin = 0;
|
||||||
public static final short RightMargin = 1;
|
public static final short RightMargin = 1;
|
||||||
@ -64,54 +66,18 @@ public class XSSFSheet implements Sheet {
|
|||||||
public static final short HeaderMargin = 4;
|
public static final short HeaderMargin = 4;
|
||||||
public static final short FooterMargin = 5;
|
public static final short FooterMargin = 5;
|
||||||
|
|
||||||
public XSSFSheet(CTSheet sheet, XSSFWorkbook workbook) {
|
|
||||||
this.sheet = sheet;
|
|
||||||
this.worksheet = CTWorksheet.Factory.newInstance();
|
|
||||||
this.workbook = workbook;
|
|
||||||
this.worksheet.addNewSheetData();
|
|
||||||
initRows(worksheet);
|
|
||||||
|
|
||||||
this.worksheet.addNewHeaderFooter();
|
|
||||||
worksheet.addNewRowBreaks();
|
|
||||||
worksheet.addNewColBreaks();
|
|
||||||
CTSheetPr sheetPr = worksheet.addNewSheetPr();
|
|
||||||
sheetPr.addNewPageSetUpPr();
|
|
||||||
worksheet.addNewPageMargins();
|
|
||||||
|
|
||||||
// XXX Initial default data, probably useful only for testing. Review and eliminate if necessary.
|
|
||||||
CTSheetViews views = this.worksheet.addNewSheetViews();
|
|
||||||
CTSheetView view = views.addNewSheetView();
|
|
||||||
view.setWorkbookViewId(0);
|
|
||||||
view.setZoomScale(100);
|
|
||||||
CTSelection selection = view.addNewSelection();
|
|
||||||
selection.setActiveCell("A1");
|
|
||||||
CTSheetFormatPr format = this.worksheet.addNewSheetFormatPr();
|
|
||||||
format.setDefaultColWidth(13);
|
|
||||||
format.setDefaultRowHeight(15);
|
|
||||||
format.setCustomHeight(true);
|
|
||||||
CTCols cols = this.worksheet.addNewCols();
|
|
||||||
CTCol col = cols.addNewCol();
|
|
||||||
col.setMin(1);
|
|
||||||
col.setMax(2);
|
|
||||||
col.setWidth(13);
|
|
||||||
col.setCustomWidth(true);
|
|
||||||
for (int i = 3 ; i < 5 ; ++i) {
|
|
||||||
col = cols.addNewCol();
|
|
||||||
col.setMin(i);
|
|
||||||
col.setMax(i);
|
|
||||||
col.setWidth(13);
|
|
||||||
col.setCustomWidth(true);
|
|
||||||
}
|
|
||||||
|
|
||||||
initColumns(worksheet);
|
|
||||||
}
|
|
||||||
|
|
||||||
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook) {
|
public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook) {
|
||||||
|
this.workbook = workbook;
|
||||||
this.sheet = sheet;
|
this.sheet = sheet;
|
||||||
this.worksheet = worksheet;
|
this.worksheet = worksheet;
|
||||||
this.workbook = workbook;
|
if (this.worksheet == null) {
|
||||||
initRows(worksheet);
|
this.worksheet = CTWorksheet.Factory.newInstance();
|
||||||
initColumns(worksheet);
|
}
|
||||||
|
if (this.worksheet.getSheetData() == null) {
|
||||||
|
this.worksheet.addNewSheetData();
|
||||||
|
}
|
||||||
|
initRows(this.worksheet);
|
||||||
|
initColumns(this.worksheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
public XSSFSheet(XSSFWorkbook workbook) {
|
public XSSFSheet(XSSFWorkbook workbook) {
|
||||||
@ -122,14 +88,22 @@ public class XSSFSheet implements Sheet {
|
|||||||
return this.workbook;
|
return this.workbook;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initRows(CTWorksheet worksheet) {
|
protected CTWorksheet getWorksheet() {
|
||||||
|
return this.worksheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ColumnHelper getColumnHelper() {
|
||||||
|
return columnHelper;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void initRows(CTWorksheet worksheet) {
|
||||||
this.rows = new LinkedList<Row>();
|
this.rows = new LinkedList<Row>();
|
||||||
for (CTRow row : worksheet.getSheetData().getRowArray()) {
|
for (CTRow row : worksheet.getSheetData().getRowArray()) {
|
||||||
this.rows.add(new XSSFRow(row, this));
|
this.rows.add(new XSSFRow(row, this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initColumns(CTWorksheet worksheet) {
|
protected void initColumns(CTWorksheet worksheet) {
|
||||||
columnHelper = new ColumnHelper(worksheet);
|
columnHelper = new ColumnHelper(worksheet);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,18 +111,13 @@ public class XSSFSheet implements Sheet {
|
|||||||
return this.sheet;
|
return this.sheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected CTWorksheet getWorksheet() {
|
|
||||||
return this.worksheet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int addMergedRegion(Region region) {
|
public int addMergedRegion(Region region) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void autoSizeColumn(short column) {
|
public void autoSizeColumn(short column) {
|
||||||
// TODO Auto-generated method stub
|
columnHelper.setColBestFit(column, true);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public Patriarch createDrawingPatriarch() {
|
public Patriarch createDrawingPatriarch() {
|
||||||
@ -215,7 +184,21 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean getAutobreaks() {
|
public boolean getAutobreaks() {
|
||||||
return worksheet.getSheetPr().getPageSetUpPr().getAutoPageBreaks();
|
return getSheetTypePageSetUpPr().getAutoPageBreaks();
|
||||||
|
}
|
||||||
|
|
||||||
|
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();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Comment getCellComment(int row, int column) {
|
public Comment getCellComment(int row, int column) {
|
||||||
@ -224,7 +207,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public short[] getColumnBreaks() {
|
public short[] getColumnBreaks() {
|
||||||
CTBreak[] brkArray = worksheet.getColBreaks().getBrkArray();
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
||||||
if (brkArray.length == 0) {
|
if (brkArray.length == 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -236,24 +219,40 @@ public class XSSFSheet implements Sheet {
|
|||||||
return breaks;
|
return breaks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CTPageBreak getSheetTypeColumnBreaks() {
|
||||||
|
if (worksheet.getColBreaks() == null) {
|
||||||
|
worksheet.setColBreaks(CTPageBreak.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getColBreaks();
|
||||||
|
}
|
||||||
|
|
||||||
public short getColumnWidth(short column) {
|
public short getColumnWidth(short column) {
|
||||||
return (short) columnHelper.getColumn(column).getWidth();
|
return (short) columnHelper.getColumn(column).getWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getDefaultColumnWidth() {
|
public short getDefaultColumnWidth() {
|
||||||
return (short) this.worksheet.getSheetFormatPr().getDefaultColWidth();
|
return (short) getSheetTypeSheetFormatPr().getDefaultColWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getDefaultRowHeight() {
|
public short getDefaultRowHeight() {
|
||||||
return (short) (this.worksheet.getSheetFormatPr().getDefaultRowHeight() * 20);
|
return (short) (getSheetTypeSheetFormatPr().getDefaultRowHeight() * 20);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTSheetFormatPr getSheetTypeSheetFormatPr() {
|
||||||
|
if (worksheet.getSheetFormatPr() == null) {
|
||||||
|
worksheet.setSheetFormatPr(CTSheetFormatPr.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getSheetFormatPr();
|
||||||
}
|
}
|
||||||
|
|
||||||
public float getDefaultRowHeightInPoints() {
|
public float getDefaultRowHeightInPoints() {
|
||||||
return (short) this.worksheet.getSheetFormatPr().getDefaultRowHeight();
|
return (short) getSheetTypeSheetFormatPr().getDefaultRowHeight();
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getDialog() {
|
public boolean getDialog() {
|
||||||
// TODO Auto-generated method stub
|
if (dialogsheet != null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,7 +272,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean getFitToPage() {
|
public boolean getFitToPage() {
|
||||||
return worksheet.getSheetPr().getPageSetUpPr().getFitToPage();
|
return getSheetTypePageSetUpPr().getFitToPage();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Footer getFooter() {
|
public Footer getFooter() {
|
||||||
@ -281,15 +280,22 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Footer getOddFooter() {
|
public Footer getOddFooter() {
|
||||||
return new XSSFOddFooter(worksheet.getHeaderFooter());
|
return new XSSFOddFooter(getSheetTypeHeaderFooter());
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTHeaderFooter getSheetTypeHeaderFooter() {
|
||||||
|
if (worksheet.getHeaderFooter() == null) {
|
||||||
|
worksheet.setHeaderFooter(CTHeaderFooter.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getHeaderFooter();
|
||||||
}
|
}
|
||||||
|
|
||||||
public Footer getEvenFooter() {
|
public Footer getEvenFooter() {
|
||||||
return new XSSFEvenFooter(worksheet.getHeaderFooter());
|
return new XSSFEvenFooter(getSheetTypeHeaderFooter());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Footer getFirstFooter() {
|
public Footer getFirstFooter() {
|
||||||
return new XSSFFirstFooter(worksheet.getHeaderFooter());
|
return new XSSFFirstFooter(getSheetTypeHeaderFooter());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Header getHeader() {
|
public Header getHeader() {
|
||||||
@ -297,21 +303,27 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Header getOddHeader() {
|
public Header getOddHeader() {
|
||||||
return new XSSFOddHeader(worksheet.getHeaderFooter());
|
return new XSSFOddHeader(getSheetTypeHeaderFooter());
|
||||||
}
|
}
|
||||||
|
|
||||||
public Header getEvenHeader() {
|
public Header getEvenHeader() {
|
||||||
return new XSSFEvenHeader(worksheet.getHeaderFooter()
|
return new XSSFEvenHeader(getSheetTypeHeaderFooter()
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Header getFirstHeader() {
|
public Header getFirstHeader() {
|
||||||
return new XSSFFirstHeader(worksheet.getHeaderFooter());
|
return new XSSFFirstHeader(getSheetTypeHeaderFooter());
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getHorizontallyCenter() {
|
public boolean getHorizontallyCenter() {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypePrintOptions().getHorizontalCentered();
|
||||||
return false;
|
}
|
||||||
|
|
||||||
|
protected CTPrintOptions getSheetTypePrintOptions() {
|
||||||
|
if (worksheet.getPrintOptions() == null) {
|
||||||
|
worksheet.setPrintOptions(CTPrintOptions.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getPrintOptions();
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getLastRowNum() {
|
public int getLastRowNum() {
|
||||||
@ -326,12 +338,13 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public short getLeftCol() {
|
public short getLeftCol() {
|
||||||
// TODO Auto-generated method stub
|
String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell();
|
||||||
return 0;
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
|
return cellReference.getCol();
|
||||||
}
|
}
|
||||||
|
|
||||||
public double getMargin(short margin) {
|
public double getMargin(short margin) {
|
||||||
CTPageMargins pageMargins = worksheet.getPageMargins();
|
CTPageMargins pageMargins = getSheetTypePageMargins();
|
||||||
switch (margin) {
|
switch (margin) {
|
||||||
case LeftMargin:
|
case LeftMargin:
|
||||||
return pageMargins.getLeft();
|
return pageMargins.getLeft();
|
||||||
@ -350,6 +363,13 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CTPageMargins getSheetTypePageMargins() {
|
||||||
|
if (worksheet.getPageMargins() == null) {
|
||||||
|
worksheet.setPageMargins(CTPageMargins.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getPageMargins();
|
||||||
|
}
|
||||||
|
|
||||||
public Region getMergedRegionAt(int index) {
|
public Region getMergedRegionAt(int index) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return null;
|
return null;
|
||||||
@ -406,7 +426,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int[] getRowBreaks() {
|
public int[] getRowBreaks() {
|
||||||
CTPageBreak rowBreaks = worksheet.getRowBreaks();
|
CTPageBreak rowBreaks = getSheetTypeRowBreaks();
|
||||||
int breaksCount = rowBreaks.getBrkArray().length;
|
int breaksCount = rowBreaks.getBrkArray().length;
|
||||||
if (breaksCount == 0) {
|
if (breaksCount == 0) {
|
||||||
return null;
|
return null;
|
||||||
@ -419,6 +439,13 @@ public class XSSFSheet implements Sheet {
|
|||||||
return breaks;
|
return breaks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected CTPageBreak getSheetTypeRowBreaks() {
|
||||||
|
if (worksheet.getRowBreaks() == null) {
|
||||||
|
worksheet.setRowBreaks(CTPageBreak.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getRowBreaks();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean getRowSumsBelow() {
|
public boolean getRowSumsBelow() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return false;
|
return false;
|
||||||
@ -430,18 +457,29 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean getScenarioProtect() {
|
public boolean getScenarioProtect() {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypeProtection().getScenarios();
|
||||||
return false;
|
}
|
||||||
|
|
||||||
|
protected CTSheetProtection getSheetTypeProtection() {
|
||||||
|
if (worksheet.getSheetProtection() == null) {
|
||||||
|
worksheet.setSheetProtection(CTSheetProtection.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return worksheet.getSheetProtection();
|
||||||
}
|
}
|
||||||
|
|
||||||
public short getTopRow() {
|
public short getTopRow() {
|
||||||
// TODO Auto-generated method stub
|
String cellRef = getSheetTypeSheetView().getTopLeftCell();
|
||||||
return 0;
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean getVerticallyCenter(boolean value) {
|
public boolean getVerticallyCenter(boolean value) {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypePrintOptions().getVerticalCentered();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void groupColumn(short fromColumn, short toColumn) {
|
public void groupColumn(short fromColumn, short toColumn) {
|
||||||
@ -455,7 +493,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isColumnBroken(short column) {
|
public boolean isColumnBroken(short column) {
|
||||||
CTBreak[] brkArray = worksheet.getColBreaks().getBrkArray();
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
||||||
for (int i = 0 ; i < brkArray.length ; i++) {
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
||||||
if (brkArray[i].getId() == column) {
|
if (brkArray[i].getId() == column) {
|
||||||
return true;
|
return true;
|
||||||
@ -469,28 +507,23 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDisplayFormulas() {
|
public boolean isDisplayFormulas() {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypeSheetView().getShowFormulas();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDisplayGridlines() {
|
public boolean isDisplayGridlines() {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypeSheetView().getShowGridLines();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isDisplayRowColHeadings() {
|
public boolean isDisplayRowColHeadings() {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypeSheetView().getShowRowColHeaders();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isGridsPrinted() {
|
public boolean isGridsPrinted() {
|
||||||
// TODO Auto-generated method stub
|
return isPrintGridlines();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isPrintGridlines() {
|
public boolean isPrintGridlines() {
|
||||||
// TODO Auto-generated method stub
|
return getSheetTypePrintOptions().getGridLines();
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRowBroken(int row) {
|
public boolean isRowBroken(int row) {
|
||||||
@ -512,10 +545,10 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeColumnBreak(short column) {
|
public void removeColumnBreak(short column) {
|
||||||
CTBreak[] brkArray = worksheet.getColBreaks().getBrkArray();
|
CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray();
|
||||||
for (int i = 0 ; i < brkArray.length ; i++) {
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
||||||
if (brkArray[i].getId() == column) {
|
if (brkArray[i].getId() == column) {
|
||||||
worksheet.getColBreaks().removeBrk(i);
|
getSheetTypeColumnBreaks().removeBrk(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -539,10 +572,10 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeRowBreak(int row) {
|
public void removeRowBreak(int row) {
|
||||||
CTBreak[] brkArray = worksheet.getRowBreaks().getBrkArray();
|
CTBreak[] brkArray = getSheetTypeRowBreaks().getBrkArray();
|
||||||
for (int i = 0 ; i < brkArray.length ; i++) {
|
for (int i = 0 ; i < brkArray.length ; i++) {
|
||||||
if (brkArray[i].getId() == row) {
|
if (brkArray[i].getId() == row) {
|
||||||
worksheet.getRowBreaks().removeBrk(i);
|
getSheetTypeRowBreaks().removeBrk(i);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -570,12 +603,12 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setAutobreaks(boolean b) {
|
public void setAutobreaks(boolean b) {
|
||||||
worksheet.getSheetPr().getPageSetUpPr().setAutoPageBreaks(b);
|
getSheetTypePageSetUpPr().setAutoPageBreaks(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setColumnBreak(short column) {
|
public void setColumnBreak(short column) {
|
||||||
if (! isColumnBroken(column)) {
|
if (! isColumnBroken(column)) {
|
||||||
CTBreak brk = worksheet.getColBreaks().addNewBrk();
|
CTBreak brk = getSheetTypeColumnBreaks().addNewBrk();
|
||||||
brk.setId(column);
|
brk.setId(column);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -586,11 +619,11 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setColumnHidden(short column, boolean hidden) {
|
public void setColumnHidden(short column, boolean hidden) {
|
||||||
columnHelper.getColumn(column).setHidden(hidden);
|
columnHelper.setColHidden(column, hidden);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setColumnWidth(short column, short width) {
|
public void setColumnWidth(short column, short width) {
|
||||||
columnHelper.getColumn(column).setWidth(width);
|
columnHelper.setColWidth(column, width);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultColumnStyle(short column, CellStyle style) {
|
public void setDefaultColumnStyle(short column, CellStyle style) {
|
||||||
@ -599,32 +632,36 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultColumnWidth(short width) {
|
public void setDefaultColumnWidth(short width) {
|
||||||
this.worksheet.getSheetFormatPr().setDefaultColWidth((double) width);
|
getSheetTypeSheetFormatPr().setDefaultColWidth((double) width);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultRowHeight(short height) {
|
public void setDefaultRowHeight(short height) {
|
||||||
this.worksheet.getSheetFormatPr().setDefaultRowHeight(height / 20);
|
getSheetTypeSheetFormatPr().setDefaultRowHeight(height / 20);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDefaultRowHeightInPoints(float height) {
|
public void setDefaultRowHeightInPoints(float height) {
|
||||||
this.worksheet.getSheetFormatPr().setDefaultRowHeight(height);
|
getSheetTypeSheetFormatPr().setDefaultRowHeight(height);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDialog(boolean b) {
|
public void setDialog(boolean b) {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayFormulas(boolean show) {
|
public void setDisplayFormulas(boolean show) {
|
||||||
// TODO Auto-generated method stub
|
getSheetTypeSheetView().setShowFormulas(show);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTSheetView getSheetTypeSheetView() {
|
||||||
|
if (getDefaultSheetView() == null) {
|
||||||
|
getSheetTypeSheetViews().setSheetViewArray(0, CTSheetView.Factory.newInstance());
|
||||||
|
}
|
||||||
|
return getDefaultSheetView();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayGridlines(boolean show) {
|
public void setDisplayGridlines(boolean show) {
|
||||||
// TODO Auto-generated method stub
|
getSheetTypeSheetView().setShowGridLines(show);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayGuts(boolean b) {
|
public void setDisplayGuts(boolean b) {
|
||||||
@ -633,26 +670,23 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setDisplayRowColHeadings(boolean show) {
|
public void setDisplayRowColHeadings(boolean show) {
|
||||||
// TODO Auto-generated method stub
|
getSheetTypeSheetView().setShowRowColHeaders(show);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setFitToPage(boolean b) {
|
public void setFitToPage(boolean b) {
|
||||||
worksheet.getSheetPr().getPageSetUpPr().setFitToPage(b);
|
getSheetTypePageSetUpPr().setFitToPage(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setGridsPrinted(boolean value) {
|
public void setGridsPrinted(boolean value) {
|
||||||
// TODO Auto-generated method stub
|
setPrintGridlines(value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setHorizontallyCenter(boolean value) {
|
public void setHorizontallyCenter(boolean value) {
|
||||||
// TODO Auto-generated method stub
|
getSheetTypePrintOptions().setHorizontalCentered(value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMargin(short margin, double size) {
|
public void setMargin(short margin, double size) {
|
||||||
CTPageMargins pageMargins = worksheet.getPageMargins();
|
CTPageMargins pageMargins = getSheetTypePageMargins();
|
||||||
switch (margin) {
|
switch (margin) {
|
||||||
case LeftMargin:
|
case LeftMargin:
|
||||||
pageMargins.setLeft(size);
|
pageMargins.setLeft(size);
|
||||||
@ -670,8 +704,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setPrintGridlines(boolean newPrintGridlines) {
|
public void setPrintGridlines(boolean newPrintGridlines) {
|
||||||
// TODO Auto-generated method stub
|
getSheetTypePrintOptions().setGridLines(newPrintGridlines);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setProtect(boolean protect) {
|
public void setProtect(boolean protect) {
|
||||||
@ -680,7 +713,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setRowBreak(int row) {
|
public void setRowBreak(int row) {
|
||||||
CTPageBreak pageBreak = worksheet.getRowBreaks();
|
CTPageBreak pageBreak = getSheetTypeRowBreaks();
|
||||||
if (! isRowBroken(row)) {
|
if (! isRowBroken(row)) {
|
||||||
CTBreak brk = pageBreak.addNewBrk();
|
CTBreak brk = pageBreak.addNewBrk();
|
||||||
brk.setId(row);
|
brk.setId(row);
|
||||||
@ -702,19 +735,29 @@ public class XSSFSheet implements Sheet {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelected(boolean sel) {
|
|
||||||
// TODO Auto-generated method stub
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setVerticallyCenter(boolean value) {
|
public void setVerticallyCenter(boolean value) {
|
||||||
// TODO Auto-generated method stub
|
getSheetTypePrintOptions().setVerticalCentered(value);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// HSSFSheet compatibility methods. See also the following zoom related methods
|
||||||
public void setZoom(int numerator, int denominator) {
|
public void setZoom(int numerator, int denominator) {
|
||||||
// TODO Auto-generated method stub
|
setZoom((numerator/denominator) * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZoom(long scale) {
|
||||||
|
getSheetTypeSheetView().setZoomScale(scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZoomNormal(long scale) {
|
||||||
|
getSheetTypeSheetView().setZoomScaleNormal(scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZoomPageLayoutView(long scale) {
|
||||||
|
getSheetTypeSheetView().setZoomScalePageLayoutView(scale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setZoomSheetLayoutView(long scale) {
|
||||||
|
getSheetTypeSheetView().setZoomScaleSheetLayoutView(scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void shiftRows(int startRow, int endRow, int n) {
|
public void shiftRows(int startRow, int endRow, int n) {
|
||||||
@ -728,8 +771,9 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void showInPane(short toprow, short leftcol) {
|
public void showInPane(short toprow, short leftcol) {
|
||||||
// TODO Auto-generated method stub
|
CellReference cellReference = new CellReference();
|
||||||
|
String cellRef = cellReference.convertRowColToString(toprow, leftcol);
|
||||||
|
getSheetTypeSheetView().setTopLeftCell(cellRef);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ungroupColumn(short fromColumn, short toColumn) {
|
public void ungroupColumn(short fromColumn, short toColumn) {
|
||||||
@ -742,14 +786,22 @@ public class XSSFSheet implements Sheet {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setTabSelected(boolean flag) {
|
public void setSelected(boolean flag) {
|
||||||
CTSheetViews views = this.worksheet.getSheetViews();
|
CTSheetViews views = getSheetTypeSheetViews();
|
||||||
for (CTSheetView view : views.getSheetViewArray()) {
|
for (CTSheetView view : views.getSheetViewArray()) {
|
||||||
view.setTabSelected(flag);
|
view.setTabSelected(flag);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isTabSelected() {
|
protected CTSheetViews getSheetTypeSheetViews() {
|
||||||
|
if (worksheet.getSheetViews() == null) {
|
||||||
|
worksheet.setSheetViews(CTSheetViews.Factory.newInstance());
|
||||||
|
worksheet.getSheetViews().addNewSheetView();
|
||||||
|
}
|
||||||
|
return worksheet.getSheetViews();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isSelected() {
|
||||||
CTSheetView view = getDefaultSheetView();
|
CTSheetView view = getDefaultSheetView();
|
||||||
return view != null && view.getTabSelected();
|
return view != null && view.getTabSelected();
|
||||||
}
|
}
|
||||||
@ -764,7 +816,7 @@ public class XSSFSheet implements Sheet {
|
|||||||
* workbookView entries) are saved."
|
* workbookView entries) are saved."
|
||||||
*/
|
*/
|
||||||
private CTSheetView getDefaultSheetView() {
|
private CTSheetView getDefaultSheetView() {
|
||||||
CTSheetViews views = this.worksheet.getSheetViews();
|
CTSheetViews views = getSheetTypeSheetViews();
|
||||||
if (views == null || views.getSheetViewArray() == null || views.getSheetViewArray().length <= 0) {
|
if (views == null || views.getSheetViewArray() == null || views.getSheetViewArray().length <= 0) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@ -772,7 +824,13 @@ public class XSSFSheet implements Sheet {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected XSSFSheet cloneSheet() {
|
protected XSSFSheet cloneSheet() {
|
||||||
return new XSSFSheet((CTSheet) sheet.copy(), this.workbook);
|
XSSFSheet newSheet = new XSSFSheet(this.workbook);
|
||||||
|
newSheet.setSheet((CTSheet)sheet.copy());
|
||||||
|
return newSheet;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setSheet(CTSheet sheet) {
|
||||||
|
this.sheet = sheet;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -52,6 +52,7 @@ import org.openxml4j.opc.PackagingURIHelper;
|
|||||||
import org.openxml4j.opc.TargetMode;
|
import org.openxml4j.opc.TargetMode;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookView;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookView;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookViews;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookViews;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorkbook;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
||||||
@ -204,13 +205,29 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Sheet createSheet(String sheetname) {
|
public Sheet createSheet(String sheetname) {
|
||||||
|
return createSheet(sheetname, null);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Sheet createSheet(String sheetname, CTWorksheet worksheet) {
|
||||||
|
CTSheet sheet = addSheet(sheetname);
|
||||||
|
XSSFWorksheet wrapper = new XSSFWorksheet(sheet, worksheet, this);
|
||||||
|
this.sheets.add(wrapper);
|
||||||
|
return wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Sheet createDialogsheet(String sheetname, CTDialogsheet dialogsheet) {
|
||||||
|
CTSheet sheet = addSheet(sheetname);
|
||||||
|
XSSFDialogsheet wrapper = new XSSFDialogsheet(sheet, dialogsheet, this);
|
||||||
|
this.sheets.add(wrapper);
|
||||||
|
return wrapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
private CTSheet addSheet(String sheetname) {
|
||||||
CTSheet sheet = workbook.getSheets().addNewSheet();
|
CTSheet sheet = workbook.getSheets().addNewSheet();
|
||||||
if (sheetname != null) {
|
if (sheetname != null) {
|
||||||
sheet.setName(sheetname);
|
sheet.setName(sheetname);
|
||||||
}
|
}
|
||||||
XSSFSheet wrapper = new XSSFSheet(sheet, this);
|
return sheet;
|
||||||
this.sheets.add(wrapper);
|
|
||||||
return wrapper;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void dumpDrawingGroupRecords(boolean fat) {
|
public void dumpDrawingGroupRecords(boolean fat) {
|
||||||
@ -331,7 +348,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
|
|||||||
public short getSelectedTab() {
|
public short getSelectedTab() {
|
||||||
short i = 0;
|
short i = 0;
|
||||||
for (XSSFSheet sheet : this.sheets) {
|
for (XSSFSheet sheet : this.sheets) {
|
||||||
if (sheet.isTabSelected()) {
|
if (sheet.isSelected()) {
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
++i;
|
++i;
|
||||||
@ -392,7 +409,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void removeSheetAt(int index) {
|
public void removeSheetAt(int index) {
|
||||||
XSSFSheet sheet = this.sheets.remove(index);
|
this.sheets.remove(index);
|
||||||
this.workbook.getSheets().removeSheet(index);
|
this.workbook.getSheets().removeSheet(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +444,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
|
|||||||
public void setSelectedTab(short index) {
|
public void setSelectedTab(short index) {
|
||||||
for (int i = 0 ; i < this.sheets.size() ; ++i) {
|
for (int i = 0 ; i < this.sheets.size() ; ++i) {
|
||||||
XSSFSheet sheet = this.sheets.get(i);
|
XSSFSheet sheet = this.sheets.get(i);
|
||||||
sheet.setTabSelected(i == index);
|
sheet.setSelected(i == index);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,32 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
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;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTHeaderFooter;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
||||||
|
|
||||||
|
public class XSSFWorksheet extends XSSFSheet implements Sheet{
|
||||||
|
|
||||||
|
public XSSFWorksheet(CTSheet sheet, CTWorksheet worksheet,
|
||||||
|
XSSFWorkbook workbook) {
|
||||||
|
super(sheet, worksheet, workbook);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -26,7 +26,7 @@ import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
|||||||
public class ColumnHelper {
|
public class ColumnHelper {
|
||||||
|
|
||||||
private CTWorksheet worksheet;
|
private CTWorksheet worksheet;
|
||||||
|
private CTCols newCols;
|
||||||
|
|
||||||
public ColumnHelper(CTWorksheet worksheet) {
|
public ColumnHelper(CTWorksheet worksheet) {
|
||||||
super();
|
super();
|
||||||
@ -35,7 +35,7 @@ public class ColumnHelper {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void cleanColumns() {
|
public void cleanColumns() {
|
||||||
CTCols newCols = CTCols.Factory.newInstance();
|
this.newCols = CTCols.Factory.newInstance();
|
||||||
CTCols[] colsArray = worksheet.getColsArray();
|
CTCols[] colsArray = worksheet.getColsArray();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (i = 0 ; i < colsArray.length ; i++) {
|
for (i = 0 ; i < colsArray.length ; i++) {
|
||||||
@ -85,6 +85,34 @@ public class ColumnHelper {
|
|||||||
if (col.getHidden()) {
|
if (col.getHidden()) {
|
||||||
newCol.setHidden(true);
|
newCol.setHidden(true);
|
||||||
}
|
}
|
||||||
|
if (col.getBestFit()) {
|
||||||
|
newCol.setBestFit(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColBestFit(long index, boolean bestFit) {
|
||||||
|
CTCol col = getOrCreateColumn(index);
|
||||||
|
col.setBestFit(bestFit);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColWidth(long index, double width) {
|
||||||
|
CTCol col = getOrCreateColumn(index);
|
||||||
|
col.setWidth(width);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setColHidden(long index, boolean hidden) {
|
||||||
|
CTCol col = getOrCreateColumn(index);
|
||||||
|
col.setHidden(hidden);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected CTCol getOrCreateColumn(long index) {
|
||||||
|
CTCol col = getColumn(index);
|
||||||
|
if (col == null) {
|
||||||
|
col = worksheet.getColsArray(0).addNewCol();
|
||||||
|
col.setMin(index);
|
||||||
|
col.setMax(index);
|
||||||
|
}
|
||||||
|
return col;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
102
src/ooxml/java/org/apache/poi/xssf/util/CellReference.java
Normal file
102
src/ooxml/java/org/apache/poi/xssf/util/CellReference.java
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
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.util;
|
||||||
|
|
||||||
|
public class CellReference {
|
||||||
|
|
||||||
|
private int row;
|
||||||
|
private short col;
|
||||||
|
|
||||||
|
public CellReference() {
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellReference(String cellRef) {
|
||||||
|
if (cellRef == null || "".equals(cellRef)) {
|
||||||
|
throw new IllegalArgumentException("Invalid Formula cell reference: '"+cellRef+"'");
|
||||||
|
}
|
||||||
|
String[] parts = getCellRefParts(cellRef);
|
||||||
|
col = getColNumFromRef(parts[0]);
|
||||||
|
row = getRowNumFromRef(parts[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public CellReference(short col, int row) {
|
||||||
|
this.col = col;
|
||||||
|
this.row = row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRow() {
|
||||||
|
return this.row;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getCol() {
|
||||||
|
return this.col;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String[] getCellRefParts(String cellRef) {
|
||||||
|
StringBuffer sb0 = new StringBuffer("");
|
||||||
|
StringBuffer sb1 = new StringBuffer("");
|
||||||
|
String[] parts = new String[2];
|
||||||
|
for (int i = 0 ; i < cellRef.length() ; i++) {
|
||||||
|
char item = cellRef.charAt(i);
|
||||||
|
if ((int)item >= 65 && (int)item <= 90) {
|
||||||
|
sb0.append(item);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
sb1.append(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
parts[0] = sb0.toString();
|
||||||
|
parts[1] = sb1.toString();
|
||||||
|
return parts;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getRowNumFromRef(String rowRef) {
|
||||||
|
return (new Integer(rowRef).intValue()) - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public short getColNumFromRef(String colRef) {
|
||||||
|
double columnIndex = -1;
|
||||||
|
for (int i = (colRef.length() - 1) ; i >= 0 ; i--) {
|
||||||
|
char numericCharValue = colRef.charAt(colRef.length() - (i + 1));
|
||||||
|
int convertedNumericCharValue = (numericCharValue - 64);
|
||||||
|
double indexIncrement = (convertedNumericCharValue * Math.pow(26, i));
|
||||||
|
columnIndex = columnIndex + indexIncrement;
|
||||||
|
}
|
||||||
|
return (short)columnIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String convertNumToColString(short col) {
|
||||||
|
String colRef = "";
|
||||||
|
double div = 1;
|
||||||
|
double mod = 0;
|
||||||
|
for (int i = 0 ; div >= 1 ; i ++) {
|
||||||
|
mod = col % 26;
|
||||||
|
div = col / 26;
|
||||||
|
int AsciiIncrement = (i != 0 ? 64 : 65);
|
||||||
|
char modToChar = (char)(mod + AsciiIncrement);
|
||||||
|
colRef = modToChar + colRef;
|
||||||
|
col = (short) ((col - mod) / 26);
|
||||||
|
}
|
||||||
|
return colRef;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String convertRowColToString(short row, short col) {
|
||||||
|
return convertNumToColString(col) + ((short) (row + 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -56,8 +56,9 @@ public class TestLoadSaveXSSF extends TestCase {
|
|||||||
assertEquals("Lorem", cell.getRichStringCellValue().getString());
|
assertEquals("Lorem", cell.getRichStringCellValue().getString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successfull.
|
||||||
public void testLoadStyles() throws Exception {
|
public void testLoadStyles() throws Exception {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "styles.xlsx").getAbsolutePath());
|
XSSFWorkbook workbook = new XSSFWorkbook(new File("src/ooxml/testcases/org/apache/poi/xssf/data", "styles.xlsx").getAbsolutePath());
|
||||||
Sheet sheet = workbook.getSheetAt(0);
|
Sheet sheet = workbook.getSheetAt(0);
|
||||||
Row row = sheet.getRow(0);
|
Row row = sheet.getRow(0);
|
||||||
Cell cell = row.getCell((short) 0);
|
Cell cell = row.getCell((short) 0);
|
||||||
@ -65,8 +66,9 @@ public class TestLoadSaveXSSF extends TestCase {
|
|||||||
// assertNotNull(style);
|
// assertNotNull(style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO filename string hard coded in XSSFWorkbook constructor in order to make ant test-ooxml target be successfull.
|
||||||
public void testLoadPictures() throws Exception {
|
public void testLoadPictures() throws Exception {
|
||||||
XSSFWorkbook workbook = new XSSFWorkbook(new File(filename, "picture.xlsx").getAbsolutePath());
|
XSSFWorkbook workbook = new XSSFWorkbook(new File("src/ooxml/testcases/org/apache/poi/xssf/data", "picture.xlsx").getAbsolutePath());
|
||||||
List<PictureData> pictures = workbook.getAllPictures();
|
List<PictureData> pictures = workbook.getAllPictures();
|
||||||
assertEquals(1, pictures.size());
|
assertEquals(1, pictures.size());
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,225 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
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;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
|
|
||||||
|
|
||||||
|
public class TestXSSFDialogSheet extends TestCase {
|
||||||
|
|
||||||
|
public void testDialogsheetConstructor() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
Sheet sheet = workbook.createSheet("Sheet 1");
|
||||||
|
XSSFDialogsheet dialogsheet = new XSSFDialogsheet(CTSheet.Factory.newInstance(), CTDialogsheet.Factory.newInstance(), workbook);
|
||||||
|
assertNotNull(dialogsheet);
|
||||||
|
XSSFDialogsheet dialogsheet2 = new XSSFDialogsheet(CTSheet.Factory.newInstance(), null, workbook);
|
||||||
|
assertNotNull(dialogsheet2);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testCreateDialogSheet() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
Sheet dialogsheet = workbook.createDialogsheet("Dialogsheet 1", CTDialogsheet.Factory.newInstance());
|
||||||
|
assertNotNull(dialogsheet);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetDialog() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.getDialog());
|
||||||
|
XSSFSheet dialogsheet = (XSSFSheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertTrue(dialogsheet.getDialog());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAddRow() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
Sheet dialogsheet = workbook.createDialogsheet("Dialogsheet 1", CTDialogsheet.Factory.newInstance());
|
||||||
|
assertNotNull(dialogsheet);
|
||||||
|
Row row = dialogsheet.createRow(0);
|
||||||
|
assertNull(row);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetAutoBreaks() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertTrue(sheet.getAutobreaks());
|
||||||
|
sheet.setAutobreaks(false);
|
||||||
|
assertFalse(sheet.getAutobreaks());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetFitToPage() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertFalse(sheet.getFitToPage());
|
||||||
|
sheet.setFitToPage(true);
|
||||||
|
assertTrue(sheet.getFitToPage());
|
||||||
|
sheet.setFitToPage(false);
|
||||||
|
assertFalse(sheet.getFitToPage());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetMargin() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertEquals((double) 0, sheet.getMargin((short) 0));
|
||||||
|
sheet.setMargin((short) 0, 10);
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 0));
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 1));
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 2));
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 3));
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 4));
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 5));
|
||||||
|
sheet.setMargin((short) 1, 11);
|
||||||
|
assertEquals((double) 11, sheet.getMargin((short) 1));
|
||||||
|
assertEquals((double) 11, sheet.getMargin((short) 2));
|
||||||
|
assertEquals((double) 11, sheet.getMargin((short) 3));
|
||||||
|
assertEquals((double) 11, sheet.getMargin((short) 4));
|
||||||
|
assertEquals((double) 11, sheet.getMargin((short) 5));
|
||||||
|
sheet.setMargin((short) 2, 12);
|
||||||
|
assertEquals((double) 12, sheet.getMargin((short) 2));
|
||||||
|
assertEquals((double) 12, sheet.getMargin((short) 3));
|
||||||
|
assertEquals((double) 12, sheet.getMargin((short) 4));
|
||||||
|
assertEquals((double) 12, sheet.getMargin((short) 5));
|
||||||
|
sheet.setMargin((short) 3, 13);
|
||||||
|
assertEquals((double) 13, sheet.getMargin((short) 3));
|
||||||
|
assertEquals((double) 13, sheet.getMargin((short) 4));
|
||||||
|
assertEquals((double) 13, sheet.getMargin((short) 5));
|
||||||
|
sheet.setMargin((short) 4, 14);
|
||||||
|
assertEquals((double) 14, sheet.getMargin((short) 4));
|
||||||
|
assertEquals((double) 14, sheet.getMargin((short) 5));
|
||||||
|
sheet.setMargin((short) 5, 15);
|
||||||
|
assertEquals((double) 15, sheet.getMargin((short) 5));
|
||||||
|
|
||||||
|
// Test that nothing happens if another margin constant is given (E.G. 65)
|
||||||
|
sheet.setMargin((short) 65, 15);
|
||||||
|
assertEquals((double) 10, sheet.getMargin((short) 0));
|
||||||
|
assertEquals((double) 11, sheet.getMargin((short) 1));
|
||||||
|
assertEquals((double) 12, sheet.getMargin((short) 2));
|
||||||
|
assertEquals((double) 13, sheet.getMargin((short) 3));
|
||||||
|
assertEquals((double) 14, sheet.getMargin((short) 4));
|
||||||
|
assertEquals((double) 15, sheet.getMargin((short) 5));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetFooter() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertNotNull(sheet.getFooter());
|
||||||
|
sheet.getFooter().setCenter("test center footer");
|
||||||
|
assertEquals("test center footer", sheet.getFooter().getCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetAllHeadersFooters() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertNotNull(sheet);
|
||||||
|
assertNotNull(sheet.getOddFooter());
|
||||||
|
assertNotNull(sheet.getEvenFooter());
|
||||||
|
assertNotNull(sheet.getFirstFooter());
|
||||||
|
assertNotNull(sheet.getOddHeader());
|
||||||
|
assertNotNull(sheet.getEvenHeader());
|
||||||
|
assertNotNull(sheet.getFirstHeader());
|
||||||
|
|
||||||
|
assertEquals("", sheet.getOddFooter().getLeft());
|
||||||
|
sheet.getOddFooter().setLeft("odd footer left");
|
||||||
|
assertEquals("odd footer left", sheet.getOddFooter().getLeft());
|
||||||
|
|
||||||
|
assertEquals("", sheet.getEvenFooter().getLeft());
|
||||||
|
sheet.getEvenFooter().setLeft("even footer left");
|
||||||
|
assertEquals("even footer left", sheet.getEvenFooter().getLeft());
|
||||||
|
|
||||||
|
assertEquals("", sheet.getFirstFooter().getLeft());
|
||||||
|
sheet.getFirstFooter().setLeft("first footer left");
|
||||||
|
assertEquals("first footer left", sheet.getFirstFooter().getLeft());
|
||||||
|
|
||||||
|
assertEquals("", sheet.getOddHeader().getLeft());
|
||||||
|
sheet.getOddHeader().setLeft("odd header left");
|
||||||
|
assertEquals("odd header left", sheet.getOddHeader().getLeft());
|
||||||
|
|
||||||
|
assertEquals("", sheet.getOddHeader().getRight());
|
||||||
|
sheet.getOddHeader().setRight("odd header right");
|
||||||
|
assertEquals("odd header right", sheet.getOddHeader().getRight());
|
||||||
|
|
||||||
|
assertEquals("", sheet.getOddHeader().getCenter());
|
||||||
|
sheet.getOddHeader().setCenter("odd header center");
|
||||||
|
assertEquals("odd header center", sheet.getOddHeader().getCenter());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetHorizontallyCentered() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertFalse(sheet.getHorizontallyCenter());
|
||||||
|
sheet.setHorizontallyCenter(true);
|
||||||
|
assertTrue(sheet.getHorizontallyCenter());
|
||||||
|
sheet.setHorizontallyCenter(false);
|
||||||
|
assertFalse(sheet.getHorizontallyCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetVerticallyCentered() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertFalse(sheet.getVerticallyCenter());
|
||||||
|
sheet.setVerticallyCenter(true);
|
||||||
|
assertTrue(sheet.getVerticallyCenter());
|
||||||
|
sheet.setVerticallyCenter(false);
|
||||||
|
assertFalse(sheet.getVerticallyCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetPrintGridlines() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertFalse(sheet.isPrintGridlines());
|
||||||
|
sheet.setPrintGridlines(true);
|
||||||
|
assertTrue(sheet.isPrintGridlines());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetDisplayFormulas() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertFalse(sheet.isDisplayFormulas());
|
||||||
|
sheet.setDisplayFormulas(true);
|
||||||
|
assertTrue(sheet.isDisplayFormulas());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetDisplayGridLines() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertTrue(sheet.isDisplayGridlines());
|
||||||
|
sheet.setDisplayGridlines(false);
|
||||||
|
assertFalse(sheet.isDisplayGridlines());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetDisplayRowColHeadings() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertTrue(sheet.isDisplayRowColHeadings());
|
||||||
|
sheet.setDisplayRowColHeadings(false);
|
||||||
|
assertFalse(sheet.isDisplayRowColHeadings());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetScenarioProtect() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFDialogsheet sheet = (XSSFDialogsheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertFalse(sheet.getScenarioProtect());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -19,12 +19,16 @@ package org.apache.poi.xssf.usermodel;
|
|||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
import org.apache.poi.ss.usermodel.Cell;
|
import org.apache.poi.ss.usermodel.Cell;
|
||||||
import org.apache.poi.ss.usermodel.Footer;
|
|
||||||
import org.apache.poi.ss.usermodel.Row;
|
import org.apache.poi.ss.usermodel.Row;
|
||||||
import org.apache.poi.ss.usermodel.Sheet;
|
import org.apache.poi.ss.usermodel.Sheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.helpers.ColumnHelper;
|
||||||
import junit.framework.TestCase;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTDialogsheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet;
|
||||||
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
||||||
|
|
||||||
|
|
||||||
public class TestXSSFSheet extends TestCase {
|
public class TestXSSFSheet extends TestCase {
|
||||||
@ -106,8 +110,8 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
Sheet sheet = workbook.createSheet("Sheet 1");
|
||||||
// Test that default height set by the constructor
|
// Test that default height set by the constructor
|
||||||
assertEquals((short) 300, sheet.getDefaultRowHeight());
|
assertEquals((short) 0, sheet.getDefaultRowHeight());
|
||||||
assertEquals((float) 15, sheet.getDefaultRowHeightInPoints());
|
assertEquals((float) 0, sheet.getDefaultRowHeightInPoints());
|
||||||
// Set a new default row height in twips and test getting the value in points
|
// Set a new default row height in twips and test getting the value in points
|
||||||
sheet.setDefaultRowHeight((short) 360);
|
sheet.setDefaultRowHeight((short) 360);
|
||||||
assertEquals((float) 18, sheet.getDefaultRowHeightInPoints());
|
assertEquals((float) 18, sheet.getDefaultRowHeightInPoints());
|
||||||
@ -120,7 +124,7 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
XSSFWorkbook workbook = new XSSFWorkbook();
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
Sheet sheet = workbook.createSheet("Sheet 1");
|
Sheet sheet = workbook.createSheet("Sheet 1");
|
||||||
// Test that default column width set by the constructor
|
// Test that default column width set by the constructor
|
||||||
assertEquals((short) 13, sheet.getDefaultColumnWidth());
|
assertEquals((short) 0, sheet.getDefaultColumnWidth());
|
||||||
// Set a new default column width and get its value
|
// Set a new default column width and get its value
|
||||||
sheet.setDefaultColumnWidth((short) 14);
|
sheet.setDefaultColumnWidth((short) 14);
|
||||||
assertEquals((short) 14, sheet.getDefaultColumnWidth());
|
assertEquals((short) 14, sheet.getDefaultColumnWidth());
|
||||||
@ -322,4 +326,94 @@ public class TestXSSFSheet extends TestCase {
|
|||||||
sheet.setColumnHidden((short) 2, true);
|
sheet.setColumnHidden((short) 2, true);
|
||||||
assertTrue(sheet.isColumnHidden((short) 2));
|
assertTrue(sheet.isColumnHidden((short) 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testAutoSizeColumn() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
ColumnHelper columnHelper = sheet.getColumnHelper();
|
||||||
|
CTCol col = columnHelper.getColumn(13);
|
||||||
|
assertNull(col);
|
||||||
|
sheet.autoSizeColumn((short)13);
|
||||||
|
col = columnHelper.getColumn(13);
|
||||||
|
assertNotNull(col);
|
||||||
|
assertTrue(col.getBestFit());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetDialog() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.getDialog());
|
||||||
|
XSSFSheet dialogsheet = (XSSFSheet) workbook.createDialogsheet("Dialogsheet 1", null);
|
||||||
|
assertTrue(dialogsheet.getDialog());
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetHorizontallyCentered() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.getHorizontallyCenter());
|
||||||
|
sheet.setHorizontallyCenter(true);
|
||||||
|
assertTrue(sheet.getHorizontallyCenter());
|
||||||
|
sheet.setHorizontallyCenter(false);
|
||||||
|
assertFalse(sheet.getHorizontallyCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetSetVerticallyCentered() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.getVerticallyCenter());
|
||||||
|
sheet.setVerticallyCenter(true);
|
||||||
|
assertTrue(sheet.getVerticallyCenter());
|
||||||
|
sheet.setVerticallyCenter(false);
|
||||||
|
assertFalse(sheet.getVerticallyCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetPrintGridlines() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.isPrintGridlines());
|
||||||
|
sheet.setPrintGridlines(true);
|
||||||
|
assertTrue(sheet.isPrintGridlines());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetDisplayFormulas() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.isDisplayFormulas());
|
||||||
|
sheet.setDisplayFormulas(true);
|
||||||
|
assertTrue(sheet.isDisplayFormulas());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetDisplayGridLines() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertTrue(sheet.isDisplayGridlines());
|
||||||
|
sheet.setDisplayGridlines(false);
|
||||||
|
assertFalse(sheet.isDisplayGridlines());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testIsSetDisplayRowColHeadings() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertTrue(sheet.isDisplayRowColHeadings());
|
||||||
|
sheet.setDisplayRowColHeadings(false);
|
||||||
|
assertFalse(sheet.isDisplayRowColHeadings());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetScenarioProtect() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
assertFalse(sheet.getScenarioProtect());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testTopRowLeftCol() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
sheet.showInPane((short)1, (short)1);
|
||||||
|
assertEquals((short) 1, sheet.getTopRow());
|
||||||
|
assertEquals((short) 1, sheet.getLeftCol());
|
||||||
|
sheet.showInPane((short)2, (short)26);
|
||||||
|
assertEquals((short) 2, sheet.getTopRow());
|
||||||
|
assertEquals((short) 26, sheet.getLeftCol());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ package org.apache.poi.xssf.usermodel.helpers;
|
|||||||
|
|
||||||
import junit.framework.TestCase;
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFSheet;
|
||||||
|
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCol;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTCols;
|
||||||
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet;
|
||||||
@ -95,6 +97,19 @@ public class TestColumnHelper extends TestCase {
|
|||||||
assertTrue(newCol.getHidden());
|
assertTrue(newCol.getHidden());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testGetOrCreateColumn() {
|
||||||
|
XSSFWorkbook workbook = new XSSFWorkbook();
|
||||||
|
XSSFSheet sheet = (XSSFSheet) workbook.createSheet("Sheet 1");
|
||||||
|
ColumnHelper columnHelper = sheet.getColumnHelper();
|
||||||
|
CTCol col = columnHelper.getOrCreateColumn(3);
|
||||||
|
assertNotNull(col);
|
||||||
|
assertNotNull(columnHelper.getColumn(3));
|
||||||
|
|
||||||
|
CTCol col2 = columnHelper.getOrCreateColumn(30);
|
||||||
|
assertNotNull(col2);
|
||||||
|
assertNotNull(columnHelper.getColumn(30));
|
||||||
|
}
|
||||||
|
|
||||||
private int countColumns(CTWorksheet worksheet) {
|
private int countColumns(CTWorksheet worksheet) {
|
||||||
int count;
|
int count;
|
||||||
count = 0;
|
count = 0;
|
||||||
|
@ -0,0 +1,117 @@
|
|||||||
|
/* ====================================================================
|
||||||
|
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.util;
|
||||||
|
|
||||||
|
import org.apache.poi.xssf.util.CellReference;
|
||||||
|
|
||||||
|
import junit.framework.TestCase;
|
||||||
|
|
||||||
|
|
||||||
|
public class TestCellReference extends TestCase {
|
||||||
|
|
||||||
|
public void testGetCellRefParts() {
|
||||||
|
String cellRef = "A1";
|
||||||
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
|
String[] parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
assertNotNull(parts);
|
||||||
|
assertEquals("A", parts[0]);
|
||||||
|
assertEquals("1", parts[1]);
|
||||||
|
|
||||||
|
cellRef = "AA1";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
assertNotNull(parts);
|
||||||
|
assertEquals("AA", parts[0]);
|
||||||
|
assertEquals("1", parts[1]);
|
||||||
|
|
||||||
|
cellRef = "AA100";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
assertNotNull(parts);
|
||||||
|
assertEquals("AA", parts[0]);
|
||||||
|
assertEquals("100", parts[1]);
|
||||||
|
|
||||||
|
|
||||||
|
cellRef = "AABC10065";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
assertNotNull(parts);
|
||||||
|
assertEquals("AABC", parts[0]);
|
||||||
|
assertEquals("10065", parts[1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetColNumFromRef() {
|
||||||
|
String cellRef = "A1";
|
||||||
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
|
String[] parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
short col = cellReference.getColNumFromRef(parts[0]);
|
||||||
|
assertEquals(0, col);
|
||||||
|
|
||||||
|
cellRef = "AB1";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
col = cellReference.getColNumFromRef(parts[0]);
|
||||||
|
assertEquals(27, col);
|
||||||
|
|
||||||
|
cellRef = "A1100";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
col = cellReference.getColNumFromRef(parts[0]);
|
||||||
|
assertEquals(0, col);
|
||||||
|
|
||||||
|
cellRef = "BC15";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
col = cellReference.getColNumFromRef(parts[0]);
|
||||||
|
assertEquals(54, col);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testGetRowNumFromRef() {
|
||||||
|
String cellRef = "A1";
|
||||||
|
CellReference cellReference = new CellReference(cellRef);
|
||||||
|
String[] parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
int row = cellReference.getRowNumFromRef(parts[1]);
|
||||||
|
assertEquals(0, row);
|
||||||
|
|
||||||
|
cellRef = "A12";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
row = cellReference.getRowNumFromRef(parts[1]);
|
||||||
|
assertEquals(11, row);
|
||||||
|
|
||||||
|
cellRef = "AS121";
|
||||||
|
cellReference = new CellReference(cellRef);
|
||||||
|
parts = cellReference.getCellRefParts(cellRef);
|
||||||
|
row = cellReference.getRowNumFromRef(parts[1]);
|
||||||
|
assertEquals(120, row);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testConvertNumToColString() {
|
||||||
|
short col = 702;
|
||||||
|
String collRef = new CellReference().convertNumToColString(col);
|
||||||
|
assertEquals("AAA", collRef);
|
||||||
|
System.err.println("***");
|
||||||
|
short col2 = 0;
|
||||||
|
String collRef2 = new CellReference().convertNumToColString(col2);
|
||||||
|
assertEquals("A", collRef2);
|
||||||
|
short col3 = 27;
|
||||||
|
String collRef3 = new CellReference().convertNumToColString(col3);
|
||||||
|
assertEquals("AB", collRef3);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user