JAVA的EXCEL导出

 

   当服务器使用linux的时候,临时文件目录权限要和启动jboss用户的权限一样,否则数据倒出来不全或者导出来的excel到一半就导不出来了。

 

	
	
	public String exportExcel() throws Exception{

		ActionContext ctx = ActionContext.getContext();
		HttpServletResponse response = (HttpServletResponse) ctx.get(ServletActionContext.HTTP_RESPONSE);

		OutputStream os = null;
		String filename = "数据.xls"; //如果乱码需要encode编码
		
		
		try {			
			response.reset();// 清空输出流
			response.setContentType("application/vnd.ms-excel");// 定义输出类型
			response.setHeader("Content-Disposition", "filename=" + filename + "");// 设定输出文件头
			os = response.getOutputStream();// 获取输出流
 
		
			long t0 = System.currentTimeMillis();
			List<User> list = new ArrayList();
			expordUtil(list, os);
			long t1 = System.currentTimeMillis();
 
		} catch (Exception e) {
			e.printStackTrace();
		}
		finally {
			if (os != null) {
				os.flush();
				os.close();
			}
		}

		return null;
	}

 

 	 //数据导出工具方法  list为导出的数据
	public String expordUtil(List  list,OutputStream os) throws Exception {
  
		
		WorkbookSettings wbSetting = new WorkbookSettings();  
        wbSetting.setUseTemporaryFileDuringWrite(true);  //表示允许使用临时文件
        wbSetting.setTemporaryFileDuringWriteDirectory(new File("\\excel"));//
        os.flush();
        
		WritableWorkbook wbook = Workbook.createWorkbook(os);// 建立Excel文件
		WritableSheet sheet = wbook.createSheet("学生信息", 0);// 为文件的sheet设置名字
		WritableFont wfont;
		WritableCellFormat wcformat; //格式化输出的excel
		Label wlabel;

		// 设置表头 start
		wfont = new WritableFont(WritableFont.createFont("宋体"), 11,
				WritableFont.BOLD, false,
				jxl.format.UnderlineStyle.NO_UNDERLINE,
				jxl.format.Colour.DARK_GREEN); // 设置表头的格式

		//设置 输出的excel格式
		wcformat = new jxl.write.WritableCellFormat(wfont);
		wcformat.setBackground(Colour.AQUA);
		wcformat.setLocked(true);
		wcformat.setAlignment(Alignment.CENTRE);
		wcformat.setBorder(Border.ALL,jxl.format.BorderLineStyle.THIN);
		//设置输出的第一列title
		wlabel = new jxl.write.Label(0, 0, "姓名", wcformat);
		sheet.addCell(wlabel);
		wlabel = new jxl.write.Label(1, 0, "性别", wcformat);
		sheet.addCell(wlabel);
		wlabel = new jxl.write.Label(2, 0, "班级", wcformat);
		sheet.addCell(wlabel);
		wlabel = new jxl.write.Label(3, 0, "学号", wcformat);
		sheet.addCell(wlabel);
		wlabel = new jxl.write.Label(4, 0, "学校", wcformat);
		sheet.addCell(wlabel);
		
 
		// 设置表头 end

		// 输出数据格式的设置 start

		wfont = new jxl.write.WritableFont(WritableFont.createFont("宋体"), 10,
				WritableFont.NO_BOLD, false,
				jxl.format.UnderlineStyle.NO_UNDERLINE, jxl.format.Colour.BLACK); // 设置表头的格式
		wcformat = new jxl.write.WritableCellFormat(wfont);
		wcformat.setBackground(Colour.WHITE);
		wcformat.setBorder(Border.ALL,jxl.format.BorderLineStyle.THIN);
		wcformat.setLocked(false);
		wcformat.setAlignment(Alignment.LEFT);
		
		//设置小表头数据格式
		wfont = new WritableFont(WritableFont.createFont("宋体"), 11,
				WritableFont.BOLD, false,
				jxl.format.UnderlineStyle.NO_UNDERLINE,
				jxl.format.Colour.DARK_GREEN); // 设置表头的格式   11 为字体大小
		
		WritableCellFormat wcformat1 = new jxl.write.WritableCellFormat(wfont);
		wcformat1.setBackground(Colour.GRAY_25);
		wcformat1.setLocked(false);
		wcformat1.setAlignment(Alignment.CENTRE);
		wcformat1.setBorder(Border.ALL,jxl.format.BorderLineStyle.THIN);


		//设置输出第二列数据
		wlabel = new jxl.write.Label(0, 1, "王勇", wcformat);
		sheet.addCell(wlabel);	

		wlabel = new jxl.write.Label(1, 1, "男", wcformat);
		sheet.addCell(wlabel);

		wlabel = new jxl.write.Label(2, 1, "一班", wcformat);
		sheet.addCell(wlabel);

		wlabel = new jxl.write.Label(3 , 1, "20060512", wcformat);
		sheet.addCell(wlabel);

		wlabel = new jxl.write.Label(3 , 1, "绥化学院", wcformat);
		sheet.addCell(wlabel);

 
		//sheet.mergeCells(10, 0, 12, 0);
		try {
		
			//从内存中写入文件中
			wbook.write();
			//关闭资源,释放内存
			wbook.close();
		} catch (IOException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		}
		
		// 输出数据格式的设置 end
		return "success";
	}








 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值