diff --git a/org.adempiere.base/src/org/adempiere/impexp/AbstractExcelExporter.java b/org.adempiere.base/src/org/adempiere/impexp/AbstractExcelExporter.java index 02f823d34f..692fcc68e5 100644 --- a/org.adempiere.base/src/org/adempiere/impexp/AbstractExcelExporter.java +++ b/org.adempiere.base/src/org/adempiere/impexp/AbstractExcelExporter.java @@ -121,7 +121,7 @@ public abstract class AbstractExcelExporter /** Logger */ protected final CLogger log = CLogger.getCLogger(getClass()); // - private HSSFWorkbook m_workbook; + protected HSSFWorkbook m_workbook; private HSSFDataFormat m_dataFormat; private HSSFFont m_fontHeader = null; private HSSFFont m_fontDefault = null; @@ -135,6 +135,7 @@ public abstract class AbstractExcelExporter private HashMap m_styles = new HashMap(); protected Boolean[] colSuppressRepeats; + private int noOfParameter = 0; public AbstractExcelExporter() { m_workbook = new HSSFWorkbook(); @@ -311,6 +312,7 @@ public abstract class AbstractExcelExporter HSSFSheet sheet= m_workbook.createSheet(); formatPage(sheet); createHeaderFooter(sheet); + createParameter(sheet); createTableHeader(sheet); m_sheetCount++; // @@ -318,10 +320,15 @@ public abstract class AbstractExcelExporter } private void createTableHeader(HSSFSheet sheet) + { + createTableHeader(sheet, Math.max(noOfParameter, 0)); + } + + private void createTableHeader(HSSFSheet sheet, int headerRowNum) { int colnumMax = 0; - HSSFRow row = sheet.createRow(0); + HSSFRow row = sheet.createRow(headerRowNum); // for all columns int colnum = 0; for (int col = 0; col < getColumnCount(); col++) @@ -343,6 +350,21 @@ public abstract class AbstractExcelExporter // m_workbook.setRepeatingRowsAndColumns(m_sheetCount, 0, 0, 0, 0); } + protected int getNoOfParameter() + { + return noOfParameter; + } + + protected void setNoOfParameter(int noOfParameter) + { + this.noOfParameter = noOfParameter; + } + + protected void createParameter(HSSFSheet sheet) + { + + } + protected void createHeaderFooter(HSSFSheet sheet) { // Sheet Header @@ -408,7 +430,9 @@ public abstract class AbstractExcelExporter preValues = new Object [colSuppressRepeats.length]; } - for (int xls_rownum = 1; rownum < lastRowNum; rownum++, xls_rownum++) + int initxls_rownum = Math.max(noOfParameter+1, 1); + + for (int xls_rownum = initxls_rownum; rownum < lastRowNum; rownum++, xls_rownum++) { if (!isCurrentRowOnly()) setCurrentRow(rownum); diff --git a/org.adempiere.base/src/org/adempiere/print/export/PrintDataExcelExporter.java b/org.adempiere.base/src/org/adempiere/print/export/PrintDataExcelExporter.java index dab5b7bf5f..9a9bbb3fd5 100644 --- a/org.adempiere.base/src/org/adempiere/print/export/PrintDataExcelExporter.java +++ b/org.adempiere.base/src/org/adempiere/print/export/PrintDataExcelExporter.java @@ -19,14 +19,21 @@ import java.util.Date; import javax.print.attribute.standard.MediaSizeName; import org.adempiere.impexp.AbstractExcelExporter; +import org.apache.poi.hssf.usermodel.HSSFCell; +import org.apache.poi.hssf.usermodel.HSSFCellStyle; +import org.apache.poi.hssf.usermodel.HSSFFont; import org.apache.poi.hssf.usermodel.HSSFPrintSetup; +import org.apache.poi.hssf.usermodel.HSSFRichTextString; +import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; +import org.compiere.model.MQuery; import org.compiere.print.MPrintFormat; import org.compiere.print.MPrintFormatItem; import org.compiere.print.MPrintPaper; import org.compiere.print.PrintData; import org.compiere.print.PrintDataElement; import org.compiere.util.DisplayType; +import org.compiere.util.Msg; import org.compiere.util.Util; /** @@ -40,12 +47,18 @@ extends AbstractExcelExporter { private PrintData m_printData; private MPrintFormat m_printFormat; + private MQuery m_query; public PrintDataExcelExporter(PrintData printData, MPrintFormat printFormat, Boolean[] colSuppressRepeats) { + this(printData, printFormat, colSuppressRepeats, null); + } + + public PrintDataExcelExporter(PrintData printData, MPrintFormat printFormat, Boolean[] colSuppressRepeats, MQuery query) { super(); this.m_printData = printData; this.m_printFormat = printFormat; this.colSuppressRepeats = colSuppressRepeats; + this.m_query = query; } @Override @@ -218,4 +231,54 @@ extends AbstractExcelExporter return cellFormat; } + + @Override + protected void createParameter(HSSFSheet sheet) { + if (!m_printFormat.isForm()) { + if (m_query != null && m_query.isActive()) { + int rows = m_query.getReportProcessQuery() != null ? m_query.getReportProcessQuery().getRestrictionCount() : m_query.getRestrictionCount(); + if (rows > 0) { + setNoOfParameter(rows); + setFreezePane(1, rows + 1); + + HSSFCellStyle parameterStyle = m_workbook.createCellStyle(); + HSSFFont parameterFont = m_workbook.createFont(); + parameterFont.setItalic(true); + parameterStyle.setFont(parameterFont); + + MQuery query = m_query; + if (m_query.getReportProcessQuery() != null) + query = m_query.getReportProcessQuery(); + for (int r = 0; r < query.getRestrictionCount(); r++) + { + HSSFRow row = sheet.createRow(r); + if (r == 0) { + HSSFCell cell = row.createCell(0); + HSSFCellStyle style = m_workbook.createCellStyle(); + HSSFFont font = m_workbook.createFont(); + font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); + style.setFont(font); + cell.setCellStyle(style); + String value = Util.stripDiacritics(Msg.getMsg(getCtx(), "Parameter") + ":"); + cell.setCellValue(new HSSFRichTextString(value)); + } + HSSFCell cell = row.createCell(1); + cell.setCellStyle(parameterStyle); + String value = Util.stripDiacritics(query.getInfoName(r)); + cell.setCellValue(new HSSFRichTextString(value)); + + cell = row.createCell(2); + cell.setCellStyle(parameterStyle); + value = Util.stripDiacritics(query.getInfoOperator(r)); + cell.setCellValue(new HSSFRichTextString(value)); + + cell = row.createCell(3); + cell.setCellStyle(parameterStyle); + value = Util.stripDiacritics(query.getInfoDisplayAll(r)); + cell.setCellValue(new HSSFRichTextString(value)); + } + } + } + } + } } diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index 9609ef0a0b..596009bedd 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -1470,7 +1470,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) throws Exception { Boolean [] colSuppressRepeats = m_layout == null || m_layout.colSuppressRepeats == null? LayoutEngine.getColSuppressRepeats(m_printFormat):m_layout.colSuppressRepeats; - PrintDataExcelExporter exp = new PrintDataExcelExporter(getPrintData(), getPrintFormat(), colSuppressRepeats); + PrintDataExcelExporter exp = new PrintDataExcelExporter(getPrintData(), getPrintFormat(), colSuppressRepeats, m_query); exp.export(outFile, language); }