Jump to content
We've recently updated our Privacy Statement, available here ×

How to open Excel file in browser?


HBK32

Recommended Posts

Hi Everyone,

 

I am trying to open Excel file in browser. I am getting dialogbox(with Open, Save & Cancel options) but when click on open it opens black excel file. Excel file generated on disk.

I am using Tomact 4.1, Eclipse 3.2, JSP & Oracle.

Following is the code(JSP file) I am using to create & open excel file.

 

Code:

<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="db" class="ConnDB.DB" scope="request" >
<jsp:«»setProperty name="db" property="*" />
</jsp:useBean>

<html>
<head>
<title>Export</title>
<meta http-equiv="Content-Type" content="application/vnd.ms-excel; charset=UTF-8">
</head>

<body bgcolor="#F5F7F0">

<%@ page import="ConnDB.*"%>
<%@ page import="java.awt.*"%>

<%@ page import="java.sql.Connection"%>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.util.*" %>
<%@ page import="net.sf.jasperreports.engine.export.*" %>

<%@ page import="com.lowagie.text.pdf.PdfWriter" %>

<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="java.io.ByteArrayOutputStream" %>
<%

String BuildID = (String)session.getAttribute("BuildingID"«»);
Map parameters = new HashMap();
parameters.put("InputValue1",BuildID);

File reportFile = new File(application.getRealPath("/WEB-INF/Jasper/InfactAdhoc.jasper"«»));

JasperReport jasperReport = (JasperReport)JRLoader.loadObject(reportFile.getPath());

//Get Connection object
Connection conn=(new DB()).connect("Weblogic","svrabm"«»);

//Filling Report

JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,parameters,conn);

// Create Destination File
File destFile = new File(reportFile.getParent()+"/Excel_Output", jasperPrint.getName() + ".xls"«»);
String Destination = destFile.toString();
//System.out.println("Destination :"+Destination);

//code For EXCEL View....
JRXlsExporter exporter = new JRXlsExporter();

ByteArrayOutputStream output = new ByteArrayOutputStream();

OutputStream outputXLS = new FileOutputStream(application.getRealPath("/WEB-INF/Jasper/Excel_Output/InfactAdhoc.xls"«»));

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
//exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, outputXLS);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_FILE, destFile);
exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_AUTO_DETECT_CELL_TYPE , Boolean.TRUE);
exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE);
exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE);

//exporter.setParameter(JRExporterParameter.OUTPUT_FILE, destFile);
//exporter.setParameter(JRExporterParameter.OUTPUT_WRITER, response.getWriter());

exporter.exportReport();
response.setContentType("application/vnd.ms-excel"«»);
//response.setHeader("Content-disposition","inline; filename="+jasperPrint.getName().toString()+".xls"«»);

outputXLS.write(output.toByteArray());
outputXLS.flush();
outputXLS.close();

%>

</body>
</html>

 

Please tell me what I am doing wrong here.As I mention file is generated on disk at specified location.

 

Plz reply me ASAP.Its Urgent

I will really appreciate response.

 

Thanks.

Link to comment
Share on other sites

  • Replies 12
  • Created
  • Last Reply

Top Posters In This Topic

I just took a very fast look at your code. It looks like you are creating the FileOutputStream before you actually export the report.

 

Try moving that line down to after you call exporter.exportReport()?

 

Hope that helps.

Link to comment
Share on other sites

lshannon wrote:

I just took a very fast look at your code. It looks like you are creating the FileOutputStream before you actually export the report.

Try moving that line down to after you call exporter.exportReport()?

Hope that helps.

 

Hello,

 

Thanks a bunch for yr quick reply.I appreciate it.

As per yr suggestion I did(moved FileOutputStream line after exporter.exportReport) it but still it didn't open.

If possible for you than can you plz look at my code again tell me what should I do?

 

I will really appreciate yr response.

 

Thanks.

Link to comment
Share on other sites

I have been stuck with a problem of my own and have not had a chance to circle back to this.

 

What I would do, if I had the time, is move this code into a servlet and then debug it with eclipse on tomcat. This way could could check the state of all your variables before you render the response.

 

Sorry I can't be of more help right now.

Link to comment
Share on other sites

Your server basically gives two kinds of things to your browser: the headers, and the data.

 

You always have to set the headers first, and after that, you can put your data to the output stream.

 

You indeed call response.setContentType("application/vnd.ms-excel"); before you send the data, BUT look what happens: your JSP contains lines like <HTML><BODY>. Your server actually starts to give these (as data) to the browser, so any call of setContentType inside the code block is too late.

 

Since you won't put html tags to the output in this situation, you can use a servlet for this as well. But I was interested, if a jsp has anything wrong to it, so I created a short example, as a servlet first, then I put the code into a jsp. I put both of them here. They are working for me, I hope you will find them useful.

 

Best regards,

Arpad

 

First, the servlet:

 

Code:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.example;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

/**
*
* @author szaboaz
*/
public class BrowseExcelServlet extends HttpServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
response.setContentType("application/vnd.ms-excel"«»);
response.setHeader("Content-Disposition", "inline; filename=xyz.xls"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/example.jasper"«»);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters);

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}// </editor-fold>

}

 

And the jsp:

 

Code:
[code]
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>

<%@ page import="java.io.IOException"%>
<%@ page import="java.io.InputStream"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="java.io.StringWriter"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="javax.servlet.ServletException"%>
<%@ page import="javax.servlet.ServletOutputStream"%>
<%@ page import="javax.servlet.http.HttpServlet"%>
<%@ page import="javax.servlet.http.HttpServletRequest"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>

<%
try {
response.setContentType("application/vnd.ms-excel"«»);
response.setHeader("Content-Disposition", "inline; filename=xyz.xls"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/example.jasper"«»);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters);

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
%>


 

Post edited by: szaboaz, at: 2008/07/08 19:38

Post edited by: szaboaz, at: 2008/07/08 19:41

Link to comment
Share on other sites

You're welcome.

 

There's another question here, maybe needs to be solved, maybe not: when I run the servlet, the browser always gives the Open/Save/Cancel dialog box, and doesn't fires up excel inside the browser window.

 

I had to achieve this second situation with pdf output, and it was ok this way:

 

response.setContentType("application/pdf");

response.setHeader("Content-Disposition", "inline; filename=xyz.pdf");

 

Note, that it is absolutely similar to the lines in the Excel example:

 

response.setContentType("application/vnd.ms-excel");

response.setHeader("Content-Disposition", "inline; filename=xyz.xls");

 

I think it has something to do with difference in Excel and Acrobat settings on the client machine.

 

I wonder if an xls still can be opened somehow inside of the browser...

 

Best regards,

Arpad

Link to comment
Share on other sites

szaboaz wrote:

Your server basically gives two kinds of things to your browser: the headers, and the data.

You always have to set the headers first, and after that, you can put your data to the output stream.

You indeed call response.setContentType("application/vnd.ms-excel"); before you send the data, BUT look what happens: your JSP contains lines like <HTML><BODY>. Your server actually starts to give these (as data) to the browser, so any call of setContentType inside the code block is too late.

Since you won't put html tags to the output in this situation, you can use a servlet for this as well. But I was interested, if a jsp has anything wrong to it, so I created a short example, as a servlet first, then I put the code into a jsp. I put both of them here. They are working for me, I hope you will find them useful.

Best regards,
Arpad

First, the servlet:

Code:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/

package com.example;

import java.io.IOException;
import java.io.InputStream;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRXlsExporter;
import net.sf.jasperreports.engine.export.JRXlsExporterParameter;

/**
*
* @author szaboaz
*/
public class BrowseExcelServlet extends HttpServlet {

/**
* Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
try {
response.setContentType("application/vnd.ms-excel"«»);
response.setHeader("Content-Disposition", "inline; filename=xyz.xls"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/example.jasper"«»);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters);

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
}

// <editor-fold defaultstate="collapsed" desc="HttpServlet methods. Click on the + sign on the left to edit the code.">
/**
* Handles the HTTP <code>GET</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP <code>POST</code> method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Returns a short description of the servlet.
*/
public String getServletInfo() {
return "Short description";
}// </editor-fold>

}

 

And the jsp:

 

Code:
[code]
<%@ page contentType="application/vnd.ms-excel;charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>

<%@ page import="java.io.IOException"%>
<%@ page import="java.io.InputStream"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="java.io.StringWriter"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="javax.servlet.ServletException"%>
<%@ page import="javax.servlet.ServletOutputStream"%>
<%@ page import="javax.servlet.http.HttpServlet"%>
<%@ page import="javax.servlet.http.HttpServletRequest"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>

<%
try {
response.setContentType("application/vnd.ms-excel"«»);
response.setHeader("Content-Disposition", "inline; filename=xyz.xls"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/example.jasper"«»);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters);

JRXlsExporter exporter = new JRXlsExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRXlsExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
%>


 

Post edited by: szaboaz, at: 2008/07/08 19:38<br><br>Post edited by: szaboaz, at: 2008/07/08 19:41

 

Hello,

 

Thanks a bunch for your reply.

Your JSP code works for me for xls & pdf. Simillarly I want to open txt file in browser, in that case what code change is required in jsp(jsp code which you have provided)??

 

I have changed code as following & its opening in browser but could't maintain the report format.

Code:
[code]
<%@ page contentType="text/plain;charset=iso-8859-1" language="java" import="java.sql.*" errorPage="" %>
<jsp:useBean id="db" class="ConnDB.DB" scope="request" >
<jsp:«»setProperty name="db" property="*" />
</jsp:useBean>

<%@ page import="ConnDB.*"%>
<%@ page import="java.io.IOException"%>
<%@ page import="java.io.InputStream"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="java.io.StringWriter"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="javax.servlet.ServletException"%>
<%@ page import="javax.servlet.ServletOutputStream"%>
<%@ page import="javax.servlet.http.HttpServlet"%>
<%@ page import="javax.servlet.http.HttpServletRequest"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>
<%@ page import="java.util.*" %>
<%@ page import="java.io.*" %>

<%@ page import="java.sql.Connection"%>
<%@ page import="net.sf.jasperreports.engine.*" %>
<%@ page import="net.sf.jasperreports.engine.util.*" %>
<%@ page import="net.sf.jasperreports.engine.export.*" %>

<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRXlsExporterParameter"%>

<%
try {

String BuildID = (String)session.getAttribute("BuildingID"«»);
Map parameters = new HashMap();
parameters.put("InputValue1",BuildID);
response.setContentType("text/html"«»);
Connection conn=(new DB()).connect("Weblogic","svrabm"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/InfactAdhoc.jasper"«»);

JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters, conn);
response.setHeader("Content-Disposition", "inline; filename="+jasperPrint.getName().toString()+".txt"«»);
//File destFile = new File(reportFile.getParent()+"/TXT", jasperPrint.getName() + ".txt"«»);

JRTextExporter exporter = new JRTextExporter();

exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRTextExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.setParameter(JRTextExporterParameter.PAGE_WIDTH, new Integer(150));
exporter.setParameter(JRTextExporterParameter.PAGE_HEIGHT, new Integer(100));


exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
%>

 

I will really appreciate your response.

 

Thanks.

Link to comment
Share on other sites

This worked for me:

 

Code:

<%@ page contentType="text/plain;charset=UTF-8" language="java" errorPage="" %>

<%@ page import="java.io.IOException"%>
<%@ page import="java.io.InputStream"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="java.io.StringWriter"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="javax.servlet.ServletException"%>
<%@ page import="javax.servlet.ServletOutputStream"%>
<%@ page import="javax.servlet.http.HttpServlet"%>
<%@ page import="javax.servlet.http.HttpServletRequest"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>

<%@ page import="net.sf.jasperreports.engine.export.JRTextExporter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRTextExporterParameter"%>

<%
try {

response.setContentType("text/plain"«»);
response.setHeader("Content-Disposition", "inline; filename=xyz.txt"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/example.jasper"«»);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters);

JRTextExporter exporter = new JRTextExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRTextExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, new Integer(10));
exporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, new Integer(10));
exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
%>

 

Best regards,

Arpad

Link to comment
Share on other sites

szaboaz wrote:

This worked for me:

Code:

<%@ page contentType="text/plain;charset=UTF-8" language="java" errorPage="" %>

<%@ page import="java.io.IOException"%>
<%@ page import="java.io.InputStream"%>
<%@ page import="java.io.PrintWriter"%>
<%@ page import="java.io.StringWriter"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="javax.servlet.ServletException"%>
<%@ page import="javax.servlet.ServletOutputStream"%>
<%@ page import="javax.servlet.http.HttpServlet"%>
<%@ page import="javax.servlet.http.HttpServletRequest"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>
<%@ page import="net.sf.jasperreports.engine.JRExporterParameter"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>

<%@ page import="net.sf.jasperreports.engine.export.JRTextExporter"%>
<%@ page import="net.sf.jasperreports.engine.export.JRTextExporterParameter"%>

<%
try {

response.setContentType("text/plain"«»);
response.setHeader("Content-Disposition", "inline; filename=xyz.txt"«»);

ServletOutputStream servletOutputStream = response.getOutputStream();

InputStream reportStream = getServletConfig().getServletContext().getResourceAsStream("/reports/example.jasper"«»);
Map parameters = new HashMap();
JasperPrint jasperPrint = JasperFillManager.fillReport(reportStream, parameters);

JRTextExporter exporter = new JRTextExporter();
exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
exporter.setParameter(JRTextExporterParameter.OUTPUT_STREAM, servletOutputStream);

exporter.setParameter(JRTextExporterParameter.CHARACTER_WIDTH, new Integer(10));
exporter.setParameter(JRTextExporterParameter.CHARACTER_HEIGHT, new Integer(10));
exporter.exportReport();

servletOutputStream.flush();
servletOutputStream.close();
} catch (Exception e) {
// display stack trace in the browser
StringWriter stringWriter = new StringWriter();
PrintWriter printWriter = new PrintWriter(stringWriter);
e.printStackTrace(printWriter);
response.setContentType("text/plain"«»);
response.getOutputStream().print(stringWriter.toString());
}
%>

 

Best regards,

Arpad

 

Hi,

 

I come across requiremt in which I need to connect to the multiple data sources in one report.

 

Can you give me example/code on how to pass/connect to multiple datasources in one report?

 

I will really appreciate the response.

 

Please reply me ASAP. It really urgent.

 

Thanks.

Link to comment
Share on other sites

szaboaz wrote:

Yeah, subreports are your friends, just like lshannon suggested in the other thread. Arpad

 

Hello,

 

Thanks a lot for your response.

If possible can you please give an example for passing datasource connection as a parameter to main report?If possible do attach sample jrxml file for the same.

 

I will really appreciate your response.

 

Please reply me ASAP. Its really urgent.

 

Thanks.

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...