/* * JasperReports - Free Java Reporting Library. * Copyright (C) 2001 - 2009 Jaspersoft Corporation. All rights reserved. * http://www.jaspersoft.com * * Unless you have purchased a commercial license agreement from Jaspersoft, * the following license terms apply: * * This program is part of JasperReports. * * JasperReports is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JasperReports is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JasperReports. If not, see <http://www.gnu.org/licenses/>. */ package net.sf.jasperreports.engine.export.ooxml; import java.io.Writer; import net.sf.jasperreports.engine.export.CutsInfo; import net.sf.jasperreports.engine.export.JRExporterGridCell; /** * @author Teodor Danciu (teodord@users.sourceforge.net) * @version $Id: DocxTableHelper.java 3439 2010-02-18 14:57:42Z teodord $ */ public class DocxTableHelper extends BaseHelper { /** * */ private CutsInfo xCuts = null; private DocxCellHelper cellHelper = null; private DocxParagraphHelper paragraphHelper = null; /** * */ protected DocxTableHelper( Writer writer, CutsInfo xCuts, boolean pageBreak ) { super(writer); this.xCuts = xCuts; this.cellHelper = new DocxCellHelper(writer); this.paragraphHelper = new DocxParagraphHelper(writer, pageBreak); } /** * */ public DocxCellHelper getCellHelper() { return cellHelper; } /** * */ public DocxParagraphHelper getParagraphHelper() { return paragraphHelper; } /** * */ public void exportHeader() { write(" <w:tbl>\n"); write(" <w:tblPr>\n"); write(" <w:tblLayout w:type=\"fixed\"/>\n"); write(" </w:tblPr>\n"); write(" <w:tblGrid>\n"); for(int col = 1; col < xCuts.size(); col++) { write(" <w:gridCol w:w=\"" + Utility.twip(xCuts.getCut(col) - xCuts.getCut(col - 1)) + "\"/>\n"); } write(" </w:tblGrid>\n"); } public void exportFooter(boolean lastPage, int pageWidth, int pageHeight) { write(" </w:tbl>\n"); if (lastPage) { write(" <w:p>\n"); write(" <w:pPr>\n"); write(" <w:sectPr>\n"); write(" <w:pgSz w:w=\"" + Utility.twip(pageWidth) + "\" w:h=\"" + Utility.twip(pageHeight) + "\" />\n"); write(" <w:pgMar w:top=\"0\" w:right=\"0\" w:bottom=\"0\" w:left=\"0\" w:header=\"0\" w:footer=\"0\" w:gutter=\"0\" />\n"); write(" <w:docGrid w:linePitch=\"360\" />\n"); write(" </w:sectPr>\n"); write(" </w:pPr>\n"); write(" </w:p>\n"); } } public void exportRowHeader(int rowHeight, boolean allowRowResize) { write(" <w:tr>\n"); write(" <w:trPr>\n"); write(" <w:trHeight w:hRule=\"" + (allowRowResize ? "atLeast" : "exact") + "\" w:val=\"" + + Utility.twip(rowHeight) + "\" />\n"); write(" </w:trPr>\n"); } public void exportRowFooter() { write(" </w:tr>\n"); } public void exportEmptyCell(JRExporterGridCell gridCell, int emptyCellColSpan) { write(" <w:tc>\n"); write(" <w:tcPr>\n"); if (emptyCellColSpan > 1) { write(" <w:gridSpan w:val=\"" + emptyCellColSpan +"\" />\n"); } if (gridCell != null) { cellHelper.exportProps(gridCell); } write(" </w:tcPr>\n"); paragraphHelper.exportEmptyParagraph(); write(" </w:tc>\n"); } public void exportOccupiedCells(JRExporterGridCell gridCell) { write(" <w:tc>\n"); write(" <w:tcPr>\n"); if (gridCell.getColSpan() > 1) { write(" <w:gridSpan w:val=\"" + gridCell.getColSpan() +"\" />\n"); } write(" <w:vMerge w:val=\"continue\" />\n"); cellHelper.exportProps(gridCell.getElement(), gridCell); write(" </w:tcPr>\n"); paragraphHelper.exportEmptyParagraph(); cellHelper.exportFooter(); } }