您的位置:首页 > 编程语言 > Java开发

JAVA JXL -----excel文件生成、在线打开和下载

2011-07-23 16:47 756 查看
前一篇是利用JXL 进行excel文档上传 和 数据解析,这里介绍利用JXL生成excel文档、并同时文件在线打开和下载
一、范例 生成一个10行5列的excel文档
WritableWorkbook wwb = null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
wwb = Workbook.createWorkbook(new File(fileName));
} catch (IOException e) {
e.printStackTrace();
}
if(wwb!=null){
//创建一个可写入的工作表
//Workbook的createSheet方法有两个参数,第一个是工作表的名称,第二个是工作表在工作薄中的位置
WritableSheet ws = wwb.createSheet("sheet1", 0);

//下面开始添加单元格
for(int i=0;i<10;i++){
for(int j=0;j<5;j++){
//这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行
Label labelC = new Label(j, i, "这是第"+(i+1)+"行,第"+(j+1)+"列");
try {
//将生成的单元格添加到工作表中
ws.addCell(labelC);
} catch (RowsExceededException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
}
try {
//从内存中写入文件中
wwb.write();
//关闭资源,释放内存
wwb.close();
} catch (IOException e) {
e.printStackTrace();
} catch (WriteException e) {
e.printStackTrace();
}
}
二、文件下载
简单起见,下载本地D盘已经生成好的文件,这里需要注意个地方,就是文件名乱码问题,在这里用红色字体标出
String filePath = "D:\\测试Excel.xls";
writeExcel(filePath);
File file = new File(filePath);
if(!file.exists()){
response.sendError(404,"File Not found");
return;
}
BufferedInputStream br = new BufferedInputStream(new FileInputStream(filePath));
byte[] buf = new byte[1024];
int len = 0;
response.reset(); // 非常重要
String fileName = file.getName();
byte[] b = fileName.getBytes( "GBK");
fileName = new String(b, "iso8859-1");
if(online){//在线打开
URL u = new URL("file:///" + filePath);
response.setContentType(u.openConnection().getContentType());
response.setHeader("Content-Disposition", "inline; filename=" + fileName);
}else{
response.setContentType("application/x-msdownload");
response.setHeader("Content-Disposition", "attachment; filename=" + fileName);
}
OutputStream out = response.getOutputStream();
while ((len = br.read(buf)) > 0)
out.write(buf, 0, len);
br.close();
out.close();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: