FR [ 1894651 ] Info Account: Excel Export support
This commit is contained in:
parent
3483a4f8c1
commit
4da24b6233
|
@ -126,6 +126,9 @@ public class RColumn
|
||||||
m_colClass = String.class;
|
m_colClass = String.class;
|
||||||
m_isIDcol = false;
|
m_isIDcol = false;
|
||||||
}
|
}
|
||||||
|
else if (displayType == DisplayType.ID) {
|
||||||
|
m_colClass = Integer.class;
|
||||||
|
}
|
||||||
/** Table
|
/** Table
|
||||||
else if (displayType == DisplayType.Table)
|
else if (displayType == DisplayType.Table)
|
||||||
{
|
{
|
||||||
|
@ -249,6 +252,8 @@ public class RColumn
|
||||||
*/
|
*/
|
||||||
public String getDisplaySQL()
|
public String getDisplaySQL()
|
||||||
{
|
{
|
||||||
|
if (m_displaySQL == null)
|
||||||
|
return m_columnName;
|
||||||
return m_displaySQL;
|
return m_displaySQL;
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -0,0 +1,77 @@
|
||||||
|
/******************************************************************************
|
||||||
|
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||||
|
* Copyright (C) 2008 SC ARHIPAC SERVICE SRL. All Rights Reserved. *
|
||||||
|
* This program is free software; you can redistribute it and/or modify it *
|
||||||
|
* under the terms version 2 of the GNU General Public License as published *
|
||||||
|
* by the Free Software Foundation. This program 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 General Public License for more details. *
|
||||||
|
* You should have received a copy of the GNU General Public License along *
|
||||||
|
* with this program; if not, write to the Free Software Foundation, Inc., *
|
||||||
|
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||||
|
*****************************************************************************/
|
||||||
|
package org.compiere.report.core;
|
||||||
|
|
||||||
|
import org.adempiere.impexp.AbstractExcelExporter;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author Teo Sarca, SC ARHIPAC SERVICE SRL
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public class RModelExcelExporter
|
||||||
|
extends AbstractExcelExporter
|
||||||
|
{
|
||||||
|
private RModel m_model = null;
|
||||||
|
private int m_currentRow = 0;
|
||||||
|
|
||||||
|
public RModelExcelExporter(RModel model) {
|
||||||
|
super();
|
||||||
|
m_model = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getColumnCount() {
|
||||||
|
return m_model.getColumnCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getDisplayType(int row, int col) {
|
||||||
|
return m_model.getRColumn(col).getDisplayType();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected String getHeaderName(int col) {
|
||||||
|
return m_model.getRColumn(col).getColHeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected int getRowCount() {
|
||||||
|
return m_model.getRowCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Object getValueAt(int row, int col) {
|
||||||
|
return m_model.getValueAt(row, col);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isColumnPrinted(int col) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isFunctionRow() {
|
||||||
|
return m_model.isGroupRow(m_currentRow);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean isPageBreak(int row, int col) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void setCurrentRow(int row) {
|
||||||
|
m_currentRow = row;
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,6 +58,8 @@ public class ResultTable extends JTable implements MouseListener
|
||||||
private int m_lastSortIndex = -1;
|
private int m_lastSortIndex = -1;
|
||||||
/** Sort direction */
|
/** Sort direction */
|
||||||
private boolean m_asc = true;
|
private boolean m_asc = true;
|
||||||
|
/** RModel */
|
||||||
|
private RModel m_model = null;
|
||||||
|
|
||||||
/** Logger */
|
/** Logger */
|
||||||
private static CLogger log = CLogger.getCLogger(ResultTable.class);
|
private static CLogger log = CLogger.getCLogger(ResultTable.class);
|
||||||
|
@ -79,6 +81,7 @@ public class ResultTable extends JTable implements MouseListener
|
||||||
public void setModel (RModel reportModel)
|
public void setModel (RModel reportModel)
|
||||||
{
|
{
|
||||||
log.config(reportModel.toString());
|
log.config(reportModel.toString());
|
||||||
|
m_model = reportModel;
|
||||||
super.setModel(new ResultTableModel(reportModel));
|
super.setModel(new ResultTableModel(reportModel));
|
||||||
//
|
//
|
||||||
TableColumnModel tcm = getColumnModel();
|
TableColumnModel tcm = getColumnModel();
|
||||||
|
@ -98,6 +101,13 @@ public class ResultTable extends JTable implements MouseListener
|
||||||
}
|
}
|
||||||
autoSize();
|
autoSize();
|
||||||
} // setModel
|
} // setModel
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return RModel
|
||||||
|
*/
|
||||||
|
public RModel getRModel() {
|
||||||
|
return m_model;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Set Model
|
* Set Model
|
||||||
|
|
|
@ -101,6 +101,7 @@ public class AcctViewer extends CFrame
|
||||||
private CPanel southPanel = new CPanel();
|
private CPanel southPanel = new CPanel();
|
||||||
private CButton bQuery = new CButton();
|
private CButton bQuery = new CButton();
|
||||||
private CButton bPrint = new CButton();
|
private CButton bPrint = new CButton();
|
||||||
|
private CButton bExport = new CButton();
|
||||||
private CLabel statusLine = new CLabel();
|
private CLabel statusLine = new CLabel();
|
||||||
private BorderLayout southLayout = new BorderLayout();
|
private BorderLayout southLayout = new BorderLayout();
|
||||||
private BorderLayout queryLayout = new BorderLayout();
|
private BorderLayout queryLayout = new BorderLayout();
|
||||||
|
@ -344,7 +345,12 @@ public class AcctViewer extends CFrame
|
||||||
bPrint.setIcon(Env.getImageIcon("Print16.gif"));
|
bPrint.setIcon(Env.getImageIcon("Print16.gif"));
|
||||||
bPrint.setToolTipText(Msg.getMsg(Env.getCtx(), "Print"));
|
bPrint.setToolTipText(Msg.getMsg(Env.getCtx(), "Print"));
|
||||||
bPrint.addActionListener(this);
|
bPrint.addActionListener(this);
|
||||||
|
bExport.setIcon(Env.getImageIcon("Export16.gif"));
|
||||||
|
bExport.setToolTipText(Msg.getMsg(Env.getCtx(), "Export"));
|
||||||
|
bExport.setVisible(tabbedPane.getSelectedIndex() == 1);
|
||||||
|
bExport.addActionListener(this);
|
||||||
CPanel rightSide = new CPanel(new FlowLayout(FlowLayout.TRAILING, 0, 0));
|
CPanel rightSide = new CPanel(new FlowLayout(FlowLayout.TRAILING, 0, 0));
|
||||||
|
rightSide.add(bExport);
|
||||||
rightSide.add(bPrint);
|
rightSide.add(bPrint);
|
||||||
rightSide.add(bQuery);
|
rightSide.add(bQuery);
|
||||||
southPanel.add(rightSide, BorderLayout.EAST);
|
southPanel.add(rightSide, BorderLayout.EAST);
|
||||||
|
@ -400,7 +406,8 @@ public class AcctViewer extends CFrame
|
||||||
*/
|
*/
|
||||||
public void dispose()
|
public void dispose()
|
||||||
{
|
{
|
||||||
m_data.dispose();
|
if (m_data != null)
|
||||||
|
m_data.dispose();
|
||||||
m_data = null;
|
m_data = null;
|
||||||
super.dispose();
|
super.dispose();
|
||||||
} // dispose;
|
} // dispose;
|
||||||
|
@ -414,6 +421,7 @@ public class AcctViewer extends CFrame
|
||||||
// log.info( "AcctViewer.stateChanged");
|
// log.info( "AcctViewer.stateChanged");
|
||||||
boolean visible = m_data.documentQuery && tabbedPane.getSelectedIndex() == 1;
|
boolean visible = m_data.documentQuery && tabbedPane.getSelectedIndex() == 1;
|
||||||
bRePost.setVisible(visible);
|
bRePost.setVisible(visible);
|
||||||
|
bExport.setVisible(tabbedPane.getSelectedIndex() == 1);
|
||||||
if (Ini.isPropertyBool(Ini.P_SHOW_ADVANCED))
|
if (Ini.isPropertyBool(Ini.P_SHOW_ADVANCED))
|
||||||
forcePost.setVisible(visible);
|
forcePost.setVisible(visible);
|
||||||
} // stateChanged
|
} // stateChanged
|
||||||
|
@ -439,6 +447,8 @@ public class AcctViewer extends CFrame
|
||||||
actionRePost();
|
actionRePost();
|
||||||
else if (source == bPrint)
|
else if (source == bPrint)
|
||||||
PrintScreenPainter.printScreen(this);
|
PrintScreenPainter.printScreen(this);
|
||||||
|
else if (source == bExport)
|
||||||
|
exportExcel();
|
||||||
// InfoButtons
|
// InfoButtons
|
||||||
else if (source instanceof CButton)
|
else if (source instanceof CButton)
|
||||||
actionButton((CButton)source);
|
actionButton((CButton)source);
|
||||||
|
@ -724,4 +734,21 @@ public class AcctViewer extends CFrame
|
||||||
}
|
}
|
||||||
} // actionRePost
|
} // actionRePost
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Export to Excel
|
||||||
|
*/
|
||||||
|
private void exportExcel() {
|
||||||
|
RModel model = table.getRModel();
|
||||||
|
if (model == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
RModelExcelExporter exporter = new RModelExcelExporter((RModel)model);
|
||||||
|
exporter.export(null, null);
|
||||||
|
}
|
||||||
|
catch (Exception e) {
|
||||||
|
ADialog.error(0, this, "Error", e.getLocalizedMessage());
|
||||||
|
if (CLogMgt.isLevelFinest()) e.printStackTrace();
|
||||||
|
}
|
||||||
|
}
|
||||||
} // AcctViewer
|
} // AcctViewer
|
||||||
|
|
Loading…
Reference in New Issue