日期:2014-05-20  浏览次数:20723 次

jxl下载excel问题,页面点击按钮后,怎么才能弹出保存打开excel文件窗口供用户下载?
由于项目需要,要生成一个包含多sheet的excel文件供用户下载。现在包含多sheet的excel文件是可以生成了,用的是jxl生成的,代码如下:
  // 创建文件
WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls"));

// 生成名为“第一页”的工作表,参数0表示这是第一页

WritableSheet sheet = book.createSheet("第一页", 0);

// 在Label对象的构造子中指名单元格位置是第一列第一行(0,0) 以及单元格内容为test

Label label = new Label(0, 0, "test");

// 将定义好的单元格添加到工作表中
sheet.addCell(label);
 这时生成的excel文件(测试.xls)在项目的根目录下,不是在服务器里工作目录里,我怎么样才能让用户下载到这个excel文件呢?想过一种方法,把这个生成的excel文件上传到服务器,然后再下载,但是这样很麻烦,不知道有没有其它方法?各位高手们帮帮忙,谢谢大家了。。。。

------解决方案--------------------
根本不用生成到硬盘上,生成到内存你,直接就可以下载了,代码如下:

response.reset();
response.setCharacterEncoding("ISO8859-1");
response.setHeader("Content-Disposition", "attachment; filename="
+ new String(fileChName.getBytes("GBK"), "ISO8859-1"));//fileChName为下载时用户看到的文件名
response.setHeader("Connection", "close");
response.setHeader("Content-Type", "application/octet-stream");

OutputStream out = response.getOutputStream();


把你的WritableWorkbook book = Workbook.createWorkbook(new File("测试.xls")); 这句
换为
Workbook.createWorkbook(out);

这样就可以不用通过保存到硬盘上直接下载了。