IDEMPIERE-3994 Show Report Parameters for Excel Export
This commit is contained in:
parent
37cf63c31f
commit
c573b240e9
|
@ -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<String, HSSFCellStyle> m_styles = new HashMap<String, HSSFCellStyle>();
|
||||
|
||||
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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue