Pages

Java JasperReport Export To Excel

JRSwapFileVirtualizer virtualizer = null;
    JRXlsExporter xlsExporter;
    JasperDesign jd;
    JasperReport jr;
    JasperPrint jp;

private void export(int index) {
        try {
            String source = Util.getUtil().getUserDirectory() + "\\reports\\report_stockbalance.jrxml";
            Map<String, Object> params = new HashMap<String, Object>();

            JRSwapFile swapFile = new JRSwapFile("D:\\pos\\temp\\", 512, 100);
            virtualizer = new JRSwapFileVirtualizer(1, swapFile, true);

            params.put("datetime", "" + Util.getUtil().formatDate(dtcFrom.getDate()) + " to " + Util.getUtil().formatDate(dtcTo.getDate()));
            params.put("total", Util.getUtil().setCommaSeperatedNumbers(networth));
            params.put(JRParameter.IS_IGNORE_PAGINATION, true);
            params.put(JRParameter.REPORT_VIRTUALIZER, virtualizer);

            jd = JRXmlLoader.load(source);
            jr = JasperCompileManager.compileReport(jd);

            if (index == 0) {
                //excel
                JFileChooser chooser = new JFileChooser();
                String filename = Util.getUtil().getDate() + "_" + Util.getUtil().getCurrentTime24().replace(":", "-");
                File f = new File(Util.getUtil().getUserDirectory() + "\\reports_exported\\stock_balance\\" + filename + ".xls");
                chooser.setSelectedFile(f);
                chooser.setDialogTitle("Specify a file to save");
                int option = chooser.showSaveDialog(null);

                if (option == JFileChooser.APPROVE_OPTION) {
                    jp = JasperFillManager.fillReport(jr, params, new JRTableModelDataSource((DefaultTableModel) tblStockBalance.getModel()));
                    File fileToSave = chooser.getSelectedFile();

                    xlsExporter = new JRXlsExporter();
                    xlsExporter.setParameter(JRExporterParameter.JASPER_PRINT, jp);
                    xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
                    xlsExporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE);
                    xlsExporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
                    xlsExporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);
                    xlsExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, fileToSave.getAbsolutePath());
                    xlsExporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.FALSE);
                    xlsExporter.exportReport();
                }

            } else if (index == 1) {
                //pdf
                JFileChooser chooser = new JFileChooser();
                String filename = Util.getUtil().getDate() + "_" + Util.getUtil().getCurrentTime24().replace(":", "-");
                File f = new File(Util.getUtil().getUserDirectory() + "\\reports_exported\\stock_balance\\" + filename + ".pdf");
                chooser.setSelectedFile(f);
                chooser.setDialogTitle("Specify a file to save");
                int option = chooser.showSaveDialog(null);

                if (option == JFileChooser.APPROVE_OPTION) {
                    jp = JasperFillManager.fillReport(jr, params, new JRTableModelDataSource((DefaultTableModel) tblStockBalance.getModel()));
                    File fileToSave = chooser.getSelectedFile();
                    JasperExportManager.exportReportToPdfFile(jp, fileToSave.getAbsolutePath());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
            LogFile.log(getClass().getName(), "export", e.getMessage().toString(), tblStockBalance);
        } finally {
            if (virtualizer != null) {
                virtualizer.cleanup();
            }
        }

    }

No comments:

Post a Comment