Jump to content
Changes to the Jaspersoft community edition download ×

problem with JRXlsExporter


yamanko

Recommended Posts

The output excel miss some content when i use JRxlsExporter, i bebug the code deeply and am quite sure the missed content is in JRPrintPage, both PDF and csv output contain these missed content.

i used JRXlsxExporter and JExcelApiExporter the results are same as JRXlsExporter. :(

when i debug the test code, i found the exporter ignore this missed control by following code

           else if(gridCell.getWrapper() != null) // this code is in JRXlsAbstractExporter.java line 575

same phenomenon happens in iReport (PDF and csv works properly but excel not)

i tested some other jrxml, some excel erporter are working properly, it's weird.

im using jasper report 3.7.1. is it a bug? does anyone meet this issue before?

Code:
FileInputStream fis = null;        String sourceFileString = null;        //read jasper template        File sourceFile = new File("sample.jrxml");        fis = new FileInputStream(sourceFile);        byte[] b = new byte[fis.available()];        fis.read(b);        sourceFileString = new String(b, "UTF-8");        JasperDesign design = null;        design = JRXmlLoader.load(new ByteArrayInputStream(sourceFileString.getBytes("UTF-8")));               JasperReport jr = JasperCompileManager.compileReport(design);        List<JasperPrint> jasperPrintList = new ArrayList<JasperPrint>();        JasperPrint jasperPrint = JasperFillManager.fillReport(jr, null, getConnection());        jasperPrintList.add(jasperPrint);        JRXlsExporter excelExporter =new JRXlsExporter();        //JRPdfExporter excelExporter =new JRPdfExporter();        //JRCsvExporter excelExporter =new JRCsvExporter();        //JRXlsxExporter excelExporter =new JRXlsxExporter();        // JExcelApiExporter excelExporter =new JExcelApiExporter();        //export jasper print to excel file        FileOutputStream out = new FileOutputStream(new File("./result.xls"));        excelExporter.setParameter(JRExporterParameter.JASPER_PRINT_LIST, jasperPrintList);        excelExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out);        excelExporter.exportReport();
Link to comment
Share on other sites

  • Replies 2
  • Created
  • Last Reply

Top Posters In This Topic

Popular Days

Top Posters In This Topic

I think you have a problem in setParameter;

replaced excelExporter.setParameter(JRExporterParameter.OUTPUT_STREAM, out); by excelExporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, filename); and check it out again.

This is my sample


package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRPdfExporter;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

package test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.HashMap;

import net.sf.jasperreports.engine.JRExporter;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JRResultSetDataSource;
import net.sf.jasperreports.engine.JasperCompileManager;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.JasperReport;
import net.sf.jasperreports.engine.design.JasperDesign;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.xml.JRXmlLoader;

public class JasperReportDemo{
    public static void main(String[] args) throws SQLException, FileNotFoundException,
    IllegalAccessException, ClassNotFoundException,Exception{
        try{
 
       
            final String driverClass = "oracle.jdbc.driver.OracleDriver";
            final String connectionURL = "jdbc:oracle:thin:@localhost:1521:pnb";
            final String userID = "pnb";
            final String userPassword = "pnb";
            Connection con = null;
            Statement stmt = null;
            ResultSet rset = null;
            Class.forName(driverClass).newInstance();
            con = DriverManager.getConnection(connectionURL, userID, userPassword);
            String queryString = "SELECT * FROM GLMAST";
            stmt = con.createStatement();
            rset = stmt.executeQuery(queryString);
           
            InputStream input = new FileInputStream(new File("template.jrxml"));
            JasperDesign design = JRXmlLoader.load(input);
            JasperReport report = JasperCompileManager.compileReport(design);
            JRResultSetDataSource jasperReports = new JRResultSetDataSource(rset);
           
            JasperPrint print = JasperFillManager.fillReport(report, new HashMap(), jasperReports);
            long start = System.currentTimeMillis();

            JRExporter exporter;

            exporter = new JRXlsExporter();
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, print);   
            exporter.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, "C:/" + start + ".xls");
            exporter.exportReport();
           
            System.out.println("Done");
        }
        catch(Exception e){
            e.printStackTrace();
        }
    }
}

Link to comment
Share on other sites

unfortunately, it does not work for me.

and i think JRExporterParameter.OUTPUT_FILE_NAME and JRExporterParameter.OUTPUT_STREAM is somewhat same as each other, and normally im prefer output_stream rather than file name which export excel into a specified file

anyway, thanks for your help

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...