--- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (revisione 7590) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorkbook.java (revisione 7623) @@ -52,6 +52,7 @@ import org.openxml4j.opc.TargetMode; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTBookView; 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.CTWorkbook; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTWorksheet; @@ -204,15 +205,31 @@ } public Sheet createSheet(String sheetname) { - CTSheet sheet = workbook.getSheets().addNewSheet(); - if (sheetname != null) { - sheet.setName(sheetname); - } - XSSFSheet wrapper = new XSSFSheet(sheet, this); + 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(); + if (sheetname != null) { + sheet.setName(sheetname); + } + return sheet; + } + public void dumpDrawingGroupRecords(boolean fat) { // TODO Auto-generated method stub @@ -479,7 +496,7 @@ out.close(); 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"); corePart.addRelationship(partName, TargetMode.INTERNAL, WORKSHEET_RELATIONSHIP, "rSheet" + 1); PackagePart part = pkg.createPart(partName, WORKSHEET_TYPE); --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (revisione 7590) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFSheet.java (revisione 7623) @@ -17,7 +17,6 @@ package org.apache.poi.xssf.usermodel; -import java.util.Collection; import java.util.Iterator; import java.util.LinkedList; import java.util.List; @@ -29,17 +28,18 @@ import org.apache.poi.ss.usermodel.Footer; import org.apache.poi.ss.usermodel.Header; 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.Row; import org.apache.poi.ss.usermodel.Sheet; 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.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.CTRow; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheet; import org.openxmlformats.schemas.spreadsheetml.x2006.main.CTSheetFormatPr; @@ -51,11 +51,12 @@ public class XSSFSheet implements Sheet { - private CTSheet sheet; - private CTWorksheet typesheet; - private List rows; - private ColumnHelper columnHelper; - private XSSFWorkbook workbook; + protected CTSheet sheet; + protected CTWorksheet worksheet; + protected CTDialogsheet dialogsheet; + protected List rows; + protected ColumnHelper columnHelper; + protected XSSFWorkbook workbook; public static final short LeftMargin = 0; public static final short RightMargin = 1; @@ -63,23 +64,20 @@ public static final short BottomMargin = 3; public static final short HeaderMargin = 4; public static final short FooterMargin = 5; - - public XSSFSheet(CTSheet sheet, XSSFWorkbook workbook) { + + public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook) { this.workbook = workbook; this.sheet = sheet; - this.typesheet = CTWorksheet.Factory.newInstance(); - this.typesheet.addNewSheetData(); - initRows(typesheet); - initColumns(typesheet); - } - - public XSSFSheet(CTSheet sheet, CTWorksheet worksheet, XSSFWorkbook workbook) { - this.sheet = sheet; - this.typesheet = worksheet; - this.workbook = workbook; - initRows(worksheet); - initColumns(worksheet); - } + this.worksheet = worksheet; + if (this.worksheet == null) { + this.worksheet = CTWorksheet.Factory.newInstance(); + } + if (this.worksheet.getSheetData() == null) { + this.worksheet.addNewSheetData(); + } + initRows(this.worksheet); + initColumns(this.worksheet); + } public XSSFSheet(XSSFWorkbook workbook) { this.workbook = workbook; @@ -89,18 +87,22 @@ return this.workbook; } + protected CTWorksheet getWorksheet() { + return this.worksheet; + } + public ColumnHelper getColumnHelper() { return columnHelper; } - private void initRows(CTWorksheet worksheet) { + protected void initRows(CTWorksheet worksheet) { this.rows = new LinkedList(); for (CTRow row : worksheet.getSheetData().getRowArray()) { this.rows.add(new XSSFRow(row, this)); } } - private void initColumns(CTWorksheet worksheet) { + protected void initColumns(CTWorksheet worksheet) { columnHelper = new ColumnHelper(worksheet); } @@ -108,10 +110,6 @@ return this.sheet; } - protected CTWorksheet getWorksheet() { - return this.typesheet; - } - public int addMergedRegion(Region region) { // TODO Auto-generated method stub return 0; @@ -137,7 +135,7 @@ } protected XSSFRow addRow(int index, int rownum) { - CTRow row = this.typesheet.getSheetData().insertNewRow(index); + CTRow row = this.worksheet.getSheetData().insertNewRow(index); XSSFRow xrow = new XSSFRow(row, this); xrow.setRowNum(rownum); return xrow; @@ -185,21 +183,21 @@ } public boolean getAutobreaks() { - return getTypesheetPageSetUpPr().getAutoPageBreaks(); + return getSheetTypePageSetUpPr().getAutoPageBreaks(); } - private CTPageSetUpPr getTypesheetPageSetUpPr() { - if (getTypesheetSheetPr().getPageSetUpPr() == null) { - getTypesheetSheetPr().setPageSetUpPr(CTPageSetUpPr.Factory.newInstance()); + private CTPageSetUpPr getSheetTypePageSetUpPr() { + if (getSheetTypeSheetPr().getPageSetUpPr() == null) { + getSheetTypeSheetPr().setPageSetUpPr(CTPageSetUpPr.Factory.newInstance()); } - return getTypesheetSheetPr().getPageSetUpPr(); + return getSheetTypeSheetPr().getPageSetUpPr(); } - protected CTSheetPr getTypesheetSheetPr() { - if (typesheet.getSheetPr() == null) { - typesheet.setSheetPr(CTSheetPr.Factory.newInstance()); + protected CTSheetPr getSheetTypeSheetPr() { + if (worksheet.getSheetPr() == null) { + worksheet.setSheetPr(CTSheetPr.Factory.newInstance()); } - return typesheet.getSheetPr(); + return worksheet.getSheetPr(); } public Comment getCellComment(int row, int column) { @@ -208,7 +206,7 @@ } public short[] getColumnBreaks() { - CTBreak[] brkArray = getTypesheetColumnBreaks().getBrkArray(); + CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray(); if (brkArray.length == 0) { return null; } @@ -220,11 +218,11 @@ return breaks; } - protected CTPageBreak getTypesheetColumnBreaks() { - if (typesheet.getColBreaks() == null) { - typesheet.setColBreaks(CTPageBreak.Factory.newInstance()); + protected CTPageBreak getSheetTypeColumnBreaks() { + if (worksheet.getColBreaks() == null) { + worksheet.setColBreaks(CTPageBreak.Factory.newInstance()); } - return typesheet.getColBreaks(); + return worksheet.getColBreaks(); } public short getColumnWidth(short column) { @@ -232,27 +230,29 @@ } public short getDefaultColumnWidth() { - return (short) getTypesheetSheetFormatPr().getDefaultColWidth(); + return (short) getSheetTypeSheetFormatPr().getDefaultColWidth(); } public short getDefaultRowHeight() { - return (short) (getTypesheetSheetFormatPr().getDefaultRowHeight() * 20); + return (short) (getSheetTypeSheetFormatPr().getDefaultRowHeight() * 20); } - protected CTSheetFormatPr getTypesheetSheetFormatPr() { - if (typesheet.getSheetFormatPr() == null) { - typesheet.setSheetFormatPr(CTSheetFormatPr.Factory.newInstance()); + protected CTSheetFormatPr getSheetTypeSheetFormatPr() { + if (worksheet.getSheetFormatPr() == null) { + worksheet.setSheetFormatPr(CTSheetFormatPr.Factory.newInstance()); } - return typesheet.getSheetFormatPr(); + return worksheet.getSheetFormatPr(); } public float getDefaultRowHeightInPoints() { - return (short) getTypesheetSheetFormatPr().getDefaultRowHeight(); + return (short) getSheetTypeSheetFormatPr().getDefaultRowHeight(); } public boolean getDialog() { - // TODO Auto-generated method stub - return false; + if (dialogsheet != null) { + return true; + } + return false; } public boolean getDisplayGuts() { @@ -271,7 +271,7 @@ } public boolean getFitToPage() { - return getTypesheetPageSetUpPr().getFitToPage(); + return getSheetTypePageSetUpPr().getFitToPage(); } public Footer getFooter() { @@ -279,22 +279,22 @@ } public Footer getOddFooter() { - return new XSSFOddFooter(getTypesheetHeaderFooter()); + return new XSSFOddFooter(getSheetTypeHeaderFooter()); } - protected CTHeaderFooter getTypesheetHeaderFooter() { - if (typesheet.getHeaderFooter() == null) { - typesheet.setHeaderFooter(CTHeaderFooter.Factory.newInstance()); + protected CTHeaderFooter getSheetTypeHeaderFooter() { + if (worksheet.getHeaderFooter() == null) { + worksheet.setHeaderFooter(CTHeaderFooter.Factory.newInstance()); } - return typesheet.getHeaderFooter(); + return worksheet.getHeaderFooter(); } public Footer getEvenFooter() { - return new XSSFEvenFooter(getTypesheetHeaderFooter()); + return new XSSFEvenFooter(getSheetTypeHeaderFooter()); } public Footer getFirstFooter() { - return new XSSFFirstFooter(getTypesheetHeaderFooter()); + return new XSSFFirstFooter(getSheetTypeHeaderFooter()); } public Header getHeader() { @@ -302,23 +302,29 @@ } public Header getOddHeader() { - return new XSSFOddHeader(getTypesheetHeaderFooter()); + return new XSSFOddHeader(getSheetTypeHeaderFooter()); } public Header getEvenHeader() { - return new XSSFEvenHeader(getTypesheetHeaderFooter() + return new XSSFEvenHeader(getSheetTypeHeaderFooter() ); } public Header getFirstHeader() { - return new XSSFFirstHeader(getTypesheetHeaderFooter()); + return new XSSFFirstHeader(getSheetTypeHeaderFooter()); } public boolean getHorizontallyCenter() { - // TODO Auto-generated method stub - return false; + return getSheetTypePrintOptions().getHorizontalCentered(); } + protected CTPrintOptions getSheetTypePrintOptions() { + if (worksheet.getPrintOptions() == null) { + worksheet.setPrintOptions(CTPrintOptions.Factory.newInstance()); + } + return worksheet.getPrintOptions(); + } + public int getLastRowNum() { int lastRowNum = -1; for (Iterator it = rowIterator() ; it.hasNext() ; ) { @@ -332,13 +338,13 @@ public short getLeftCol() { // TODO no test for this method at the moment. - String cellRef = typesheet.getSheetViews().getSheetViewArray(0).getTopLeftCell(); + String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell(); CellReference cellReference = new CellReference(cellRef); return cellReference.getCol(); } public double getMargin(short margin) { - CTPageMargins pageMargins = getTypesheetPageMargins(); + CTPageMargins pageMargins = getSheetTypePageMargins(); switch (margin) { case LeftMargin: return pageMargins.getLeft(); @@ -357,11 +363,11 @@ } } - protected CTPageMargins getTypesheetPageMargins() { - if (typesheet.getPageMargins() == null) { - typesheet.setPageMargins(CTPageMargins.Factory.newInstance()); + protected CTPageMargins getSheetTypePageMargins() { + if (worksheet.getPageMargins() == null) { + worksheet.setPageMargins(CTPageMargins.Factory.newInstance()); } - return typesheet.getPageMargins(); + return worksheet.getPageMargins(); } public Region getMergedRegionAt(int index) { @@ -420,7 +426,7 @@ } public int[] getRowBreaks() { - CTPageBreak rowBreaks = getTypesheetRowBreaks(); + CTPageBreak rowBreaks = getSheetTypeRowBreaks(); int breaksCount = rowBreaks.getBrkArray().length; if (breaksCount == 0) { return null; @@ -433,11 +439,11 @@ return breaks; } - protected CTPageBreak getTypesheetRowBreaks() { - if (typesheet.getRowBreaks() == null) { - typesheet.setRowBreaks(CTPageBreak.Factory.newInstance()); + protected CTPageBreak getSheetTypeRowBreaks() { + if (worksheet.getRowBreaks() == null) { + worksheet.setRowBreaks(CTPageBreak.Factory.newInstance()); } - return typesheet.getRowBreaks(); + return worksheet.getRowBreaks(); } public boolean getRowSumsBelow() { @@ -457,7 +463,7 @@ public short getTopRow() { // TODO no test for this method at the moment. - String cellRef = typesheet.getSheetViews().getSheetViewArray(0).getTopLeftCell(); + String cellRef = worksheet.getSheetViews().getSheetViewArray(0).getTopLeftCell(); CellReference cellReference = new CellReference(cellRef); return (short) cellReference.getRow(); } @@ -478,7 +484,7 @@ } public boolean isColumnBroken(short column) { - CTBreak[] brkArray = getTypesheetColumnBreaks().getBrkArray(); + CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray(); for (int i = 0 ; i < brkArray.length ; i++) { if (brkArray[i].getId() == column) { return true; @@ -492,28 +498,23 @@ } public boolean isDisplayFormulas() { - // TODO Auto-generated method stub - return false; + return getSheetTypeSheetView().getShowFormulas(); } public boolean isDisplayGridlines() { - // TODO Auto-generated method stub - return false; + return getSheetTypeSheetView().getShowGridLines(); } public boolean isDisplayRowColHeadings() { - // TODO Auto-generated method stub - return false; + return getSheetTypeSheetView().getShowRowColHeaders(); } public boolean isGridsPrinted() { - // TODO Auto-generated method stub - return false; + return isPrintGridlines(); } public boolean isPrintGridlines() { - // TODO Auto-generated method stub - return false; + return getSheetTypePrintOptions().getGridLines(); } public boolean isRowBroken(int row) { @@ -535,10 +536,10 @@ } public void removeColumnBreak(short column) { - CTBreak[] brkArray = getTypesheetColumnBreaks().getBrkArray(); + CTBreak[] brkArray = getSheetTypeColumnBreaks().getBrkArray(); for (int i = 0 ; i < brkArray.length ; i++) { if (brkArray[i].getId() == column) { - getTypesheetColumnBreaks().removeBrk(i); + getSheetTypeColumnBreaks().removeBrk(i); continue; } } @@ -555,17 +556,17 @@ Row r = it.next(); if (r.getRowNum() == row.getRowNum()) { it.remove(); - typesheet.getSheetData().removeRow(counter); + worksheet.getSheetData().removeRow(counter); } counter++; } } public void removeRowBreak(int row) { - CTBreak[] brkArray = getTypesheetRowBreaks().getBrkArray(); + CTBreak[] brkArray = getSheetTypeRowBreaks().getBrkArray(); for (int i = 0 ; i < brkArray.length ; i++) { if (brkArray[i].getId() == row) { - getTypesheetRowBreaks().removeBrk(i); + getSheetTypeRowBreaks().removeBrk(i); continue; } } @@ -593,12 +594,12 @@ } public void setAutobreaks(boolean b) { - getTypesheetPageSetUpPr().setAutoPageBreaks(b); + getSheetTypePageSetUpPr().setAutoPageBreaks(b); } public void setColumnBreak(short column) { if (! isColumnBroken(column)) { - CTBreak brk = getTypesheetColumnBreaks().addNewBrk(); + CTBreak brk = getSheetTypeColumnBreaks().addNewBrk(); brk.setId(column); } } @@ -622,32 +623,36 @@ } public void setDefaultColumnWidth(short width) { - getTypesheetSheetFormatPr().setDefaultColWidth((double) width); + getSheetTypeSheetFormatPr().setDefaultColWidth((double) width); } public void setDefaultRowHeight(short height) { - getTypesheetSheetFormatPr().setDefaultRowHeight(height / 20); + getSheetTypeSheetFormatPr().setDefaultRowHeight(height / 20); } public void setDefaultRowHeightInPoints(float height) { - getTypesheetSheetFormatPr().setDefaultRowHeight(height); + getSheetTypeSheetFormatPr().setDefaultRowHeight(height); } public void setDialog(boolean b) { // TODO Auto-generated method stub - } 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) { - // TODO Auto-generated method stub - + getSheetTypeSheetView().setShowGridLines(show); } public void setDisplayGuts(boolean b) { @@ -656,26 +661,23 @@ } public void setDisplayRowColHeadings(boolean show) { - // TODO Auto-generated method stub - + getSheetTypeSheetView().setShowRowColHeaders(show); } public void setFitToPage(boolean b) { - getTypesheetPageSetUpPr().setFitToPage(b); + getSheetTypePageSetUpPr().setFitToPage(b); } public void setGridsPrinted(boolean value) { - // TODO Auto-generated method stub - + setPrintGridlines(value); } public void setHorizontallyCenter(boolean value) { - // TODO Auto-generated method stub - + getSheetTypePrintOptions().setHorizontalCentered(value); } public void setMargin(short margin, double size) { - CTPageMargins pageMargins = getTypesheetPageMargins(); + CTPageMargins pageMargins = getSheetTypePageMargins(); switch (margin) { case LeftMargin: pageMargins.setLeft(size); @@ -693,8 +695,7 @@ } public void setPrintGridlines(boolean newPrintGridlines) { - // TODO Auto-generated method stub - + getSheetTypePrintOptions().setGridLines(newPrintGridlines); } public void setProtect(boolean protect) { @@ -703,7 +704,7 @@ } public void setRowBreak(int row) { - CTPageBreak pageBreak = getTypesheetRowBreaks(); + CTPageBreak pageBreak = getSheetTypeRowBreaks(); if (! isRowBroken(row)) { CTBreak brk = pageBreak.addNewBrk(); brk.setId(row); @@ -766,18 +767,18 @@ } public void setTabSelected(boolean flag) { - CTSheetViews views = getTypesheetSheetViews(); + CTSheetViews views = getSheetTypeSheetViews(); for (CTSheetView view : views.getSheetViewArray()) { view.setTabSelected(flag); } } - protected CTSheetViews getTypesheetSheetViews() { - if (typesheet.getSheetViews() == null) { - typesheet.setSheetViews(CTSheetViews.Factory.newInstance()); - typesheet.getSheetViews().addNewSheetView(); + protected CTSheetViews getSheetTypeSheetViews() { + if (worksheet.getSheetViews() == null) { + worksheet.setSheetViews(CTSheetViews.Factory.newInstance()); + worksheet.getSheetViews().addNewSheetView(); } - return typesheet.getSheetViews(); + return worksheet.getSheetViews(); } public boolean isTabSelected() { @@ -795,7 +796,7 @@ * workbookView entries) are saved." */ private CTSheetView getDefaultSheetView() { - CTSheetViews views = getTypesheetSheetViews(); + CTSheetViews views = getSheetTypeSheetViews(); if (views == null || views.getSheetViewArray() == null || views.getSheetViewArray().length <= 0) { return null; } @@ -803,7 +804,13 @@ } 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; + } } --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorksheet.java (revisione 0) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFWorksheet.java (revisione 7623) @@ -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); + } + +} --- src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java (revisione 0) +++ src/ooxml/java/org/apache/poi/xssf/usermodel/XSSFDialogsheet.java (revisione 7623) @@ -0,0 +1,100 @@ +/* ==================================================================== + 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.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(); + } + +} --- src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java (revisione 0) +++ src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFDialogSheet.java (revisione 7623) @@ -0,0 +1,209 @@ +/* ==================================================================== + 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 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()); + } + +} --- src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (revisione 7590) +++ src/ooxml/testcases/org/apache/poi/xssf/usermodel/TestXSSFSheet.java (revisione 7623) @@ -26,6 +26,9 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.helpers.ColumnHelper; 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 { @@ -335,4 +338,55 @@ 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 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()); + } } --- src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java (revisione 7590) +++ src/ooxml/testcases/org/apache/poi/xssf/io/TestLoadSaveXSSF.java (revisione 7623) @@ -56,17 +56,19 @@ 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 { - 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); Row row = sheet.getRow(0); Cell cell = row.getCell((short) 0); CellStyle style = cell.getCellStyle(); // 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 { - 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 pictures = workbook.getAllPictures(); assertEquals(1, pictures.size()); }