yamanko Posted April 2, 2010 Share Posted April 2, 2010 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 575same 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 More sharing options...
minhduc Posted April 2, 2010 Share Posted April 2, 2010 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 samplepackage 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 More sharing options...
yamanko Posted April 6, 2010 Author Share Posted April 6, 2010 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 fileanyway, thanks for your help Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now