思路:
1.页面数据展示,提供下载按钮
2.类一:从数据库提取数据,调用类二的方法
3.类二:生成Excel报表,并在服务器上存留,返回报表存留路径
4.Servlet中调用类一,并通过下面的代码,返回给Web页面,供用户下载
byte[] buffer = new byte[4096];
BufferedOutputStream output = null;
BufferedInputStream input = null;
File file=new File(类一返回的存留路径);
response.reset();// 清空buffer,设置页面不缓存
response.setContentType("application/octet-stream; charset=GBK");
response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode("Excel表名称", "UTF-8")+".xls");
response.setContentLength((int) file.length());//得到文件的长度
// 写缓冲区:
try {
output = new BufferedOutputStream(response.getOutputStream());
input = new BufferedInputStream(new FileInputStream(file));
int n = (-1);
while ((n = input.read(buffer, 0, 4096)) > -1) {
output.write(buffer, 0, n);
}
response.flushBuffer();
}
catch (Exception e) {
}
finally {
if (input != null) input.close();
if (output != null) output.close();
}
这是最近一次我用到的JXL导出并提供下载的方法。以供今后复用。[/align]
1.页面数据展示,提供下载按钮
2.类一:从数据库提取数据,调用类二的方法
3.类二:生成Excel报表,并在服务器上存留,返回报表存留路径
4.Servlet中调用类一,并通过下面的代码,返回给Web页面,供用户下载
byte[] buffer = new byte[4096];
BufferedOutputStream output = null;
BufferedInputStream input = null;
File file=new File(类一返回的存留路径);
response.reset();// 清空buffer,设置页面不缓存
response.setContentType("application/octet-stream; charset=GBK");
response.setHeader("Content-disposition","attachment; filename="+URLEncoder.encode("Excel表名称", "UTF-8")+".xls");
response.setContentLength((int) file.length());//得到文件的长度
// 写缓冲区:
try {
output = new BufferedOutputStream(response.getOutputStream());
input = new BufferedInputStream(new FileInputStream(file));
int n = (-1);
while ((n = input.read(buffer, 0, 4096)) > -1) {
output.write(buffer, 0, n);
}
response.flushBuffer();
}
catch (Exception e) {
}
finally {
if (input != null) input.close();
if (output != null) output.close();
}
这是最近一次我用到的JXL导出并提供下载的方法。以供今后复用。[/align]