简单方法:用servlet实现。客户端请求servlet,servlet中设置返回的类型为xls要求的格式,把jasperreport对象写入servlet的response中。
复杂方法:扩展jasperreport的APPLET,并对APPLET进行签名让其可以访问文件系统。服务器端也是使用servlet方法把jasperreport对象写入servlet的response中。在APPLET中写代码直接去加载jasperrepot对象,并调用java的文件对话框保存文件(本人是用这种方法实现的)。
具体实现不便告知,见谅。
复杂方法:扩展jasperreport的APPLET,并对APPLET进行签名让其可以访问文件系统。服务器端也是使用servlet方法把jasperreport对象写入servlet的response中。在APPLET中写代码直接去加载jasperrepot对象,并调用java的文件对话框保存文件(本人是用这种方法实现的)。
具体实现不便告知,见谅。
{
FileInputStream fis = new FileInputStream(new File(sFileName.toString()));
response.setHeader("Content-Disposition:", "attachment;filename=" + sFileName );
BufferedInputStream bis= new BufferedInputStream(fis);
ServletOutputStream sos = response.getOutputStream();
byte[] buffer = new byte[5000];
response.setHeader("Content-Length:", String.valueOf (bis.available()));
while (true)
{
int bytesRead = bis.read(buffer, 0, buffer.length);
if (bytesRead < 0)
break;
sos.write(buffer, 0, bytesRead);
}
fis.close();
sos.flush();
sos.close();
}
catch(Exception ex)
{
log.error("Read file:"+sFileName.toString()+"is error!");
ex.printStackTrace();
}