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:
Ugo Cei 2008-02-29 14:18:06 +00:00
parent 8191f45e44
commit 88aa367ec3
11 changed files with 962 additions and 164 deletions

View File

@ -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();
}
}

View File

@ -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,55 +66,19 @@ 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) { public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook) {
this.sheet = sheet;
this.worksheet = CTWorksheet.Factory.newInstance();
this.workbook = workbook; 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) {
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) {
this.workbook = workbook; this.workbook = 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,16 +184,30 @@ 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) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
return null; return null;
} }
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,25 +219,41 @@ 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 false; return true;
}
return false;
} }
public boolean getDisplayGuts() { public boolean getDisplayGuts() {
@ -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,23 +303,29 @@ 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() {
int lastRowNum = -1; int lastRowNum = -1;
for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) { for (Iterator<Row> it = rowIterator() ; it.hasNext() ; ) {
@ -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);
} }
public void setDisplayGridlines(boolean show) { protected CTSheetView getSheetTypeSheetView() {
// TODO Auto-generated method stub if (getDefaultSheetView() == null) {
getSheetTypeSheetViews().setSheetViewArray(0, CTSheetView.Factory.newInstance());
}
return getDefaultSheetView();
}
public void setDisplayGridlines(boolean show) {
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;
}
} }

View File

@ -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,15 +205,31 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
} }
public Sheet createSheet(String sheetname) { public Sheet createSheet(String sheetname) {
CTSheet sheet = workbook.getSheets().addNewSheet(); return createSheet(sheetname, null);
if (sheetname != null) { }
sheet.setName(sheetname);
} public Sheet createSheet(String sheetname, CTWorksheet worksheet) {
XSSFSheet wrapper = new XSSFSheet(sheet, this); CTSheet sheet = addSheet(sheetname);
XSSFWorksheet wrapper = new XSSFWorksheet(sheet, worksheet, this);
this.sheets.add(wrapper); this.sheets.add(wrapper);
return 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();
if (sheetname != null) {
sheet.setName(sheetname);
}
return sheet;
}
public void dumpDrawingGroupRecords(boolean fat) { public void dumpDrawingGroupRecords(boolean fat) {
// TODO Auto-generated method stub // TODO Auto-generated method stub
@ -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);
} }
} }
@ -479,7 +496,7 @@ public class XSSFWorkbook extends POIXMLDocument implements Workbook {
out.close(); out.close();
for (int i = 0 ; i < this.getNumberOfSheets() ; ++i) { for (int i = 0 ; i < this.getNumberOfSheets() ; ++i) {
XSSFSheet sheet = (XSSFSheet) this.getSheetAt(i); XSSFSheet sheet = (XSSFSheet) this.getSheetAt(i);
PackagePartName partName = PackagingURIHelper.createPartName("/xl/worksheets/sheet" + i + ".xml"); PackagePartName partName = PackagingURIHelper.createPartName("/xl/worksheets/sheet" + i + ".xml");
corePart.addRelationship(partName, TargetMode.INTERNAL, WORKSHEET_RELATIONSHIP, "rSheet" + 1); corePart.addRelationship(partName, TargetMode.INTERNAL, WORKSHEET_RELATIONSHIP, "rSheet" + 1);
PackagePart part = pkg.createPart(partName, WORKSHEET_TYPE); PackagePart part = pkg.createPart(partName, WORKSHEET_TYPE);

View File

@ -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);
}
}

View File

@ -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;
}
} }

View 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));
}
}

View File

@ -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());
} }

View File

@ -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());
}
}

View File

@ -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());
}
} }

View File

@ -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;

View File

@ -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);
}
}