jxl保存Excel

参考:

        http://zw7534313.iteye.com

jsp页面:

<script type="text/javascript">
	function dodo(){
		window.location.href="${root}/jxlCreate/createJxl";
	}
</script>
</head>
<body>
	<center>&nbsp;
	<p />
	<form action="Test/jxlCreate" method="post">
		<input type="button" value="  test导出EXCEL  " οnclick="dodo();">
	</form>
	</center>
</body>

 后台java代码:

/**
  * 适用于从数据库中获取数据并保存到本地形成xls文件
  * @param request
  * @param response
  * @throws IOException
  */
 @RequestMapping(value="/createJxl",method=RequestMethod.GET)
 public String createJxl(HttpServletRequest request,HttpServletResponse response) throws IOException{
  String[] title = { "第一", "第二", "第三", "第四", "第五", "第六", "第七" };
  try {
   // 获得开始时间
   long start = System.currentTimeMillis();
   //------------弹出保存对话框begin----------------
   OutputStream os = response.getOutputStream();
   response.reset();// 清空输出流   
 //String fileName = java.net.URLEncoder.encode("培训费用","UTF-8")+".xls";  可设置中文名称          
    response.setHeader("Content-disposition", "attachment; filename="+new String("Book1".getBytes("UTF-8"),"UTF-8")+".xls");// 设定输出文件头   
            response.setContentType("application/msexcel");// 定义输出类型  
            //-------------弹出保存对话框end---------------
            WritableWorkbook wwb = Workbook.createWorkbook(os);
   // 添加第一个工作表并设置第一个Sheet的名字
   WritableSheet sheet = wwb.createSheet("第一个工作表", 0);
   Label label;
   //设置标题行
   for (int i = 0; i < title.length; i++) {
    // Label(x,y,z)其中x代表单元格的第x+1列,第y+1行, 单元格的内容是z
    // 在Label对象的子对象中指明单元格的位置和内容
    label = new Label(i, 0, title[i]);
    // 将定义好的单元格添加到工作表中
    sheet.addCell(label);
   }
   // 下面是填充数据
   /*
    * 保存数字到单元格,需要使用jxl.write.Number 必须使用其完整路径,否则会出现错误
    */
   // 填充"第一"(数字类型)
   jxl.write.Number number = new jxl.write.Number(0, 1, 20071001);
   sheet.addCell(number);
   // 填充"第二"(文本类型)
   label = new Label(1, 1, "金鸽瓜子");
   sheet.addCell(label);
   /*
    * 填充"第三"
    * 定义对于显示金额的公共格式 jxl会自动实现四舍五入 例如 2.456会被格式化为2.46,2.454会被格式化为2.45
    */
   jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#.##");
   jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(
     nf);
   // 填充产品价格
   jxl.write.Number nb = new jxl.write.Number(2, 1, 2.45, wcf);
   sheet.addCell(nb);
   // 填充产品数量
   jxl.write.Number numb = new jxl.write.Number(3, 1, 200);
   sheet.addCell(numb);
   /*
    * 定义显示日期的公共格式 如:yyyy-MM-dd hh:mm
    */
   SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
   String newdate = sdf.format(new Date());
   // 填充出产日期
   label = new Label(4, 1, newdate);
   sheet.addCell(label);
   // 填充产地
   label = new Label(5, 1, "北京");
   sheet.addCell(label);
   /*
    * 显示布尔值
    */
   jxl.write.Boolean bool = new jxl.write.Boolean(6, 1, true);
   sheet.addCell(bool);
   /*
    * 合并单元格 通过writablesheet.mergeCells(int x,int y,int m,int n);来实现的
    * 表示将从第x+1列,y+1行到m+1列,n+1行合并
    */
   sheet.mergeCells(0, 3, 2, 3);
   label = new Label(0, 3, "合并了三个单元格");
   sheet.addCell(label);
   /*
    * 
    * 定义公共字体格式 通过获取一个字体的样式来作为模板 首先通过    web.getSheet(0)获得第一个sheet
    * 然后取得第一个sheet的第二列,第一行也就是"产品名称"的字体
    */
   CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();
   WritableCellFormat wc = new WritableCellFormat();
   // 设置居中
   wc.setAlignment(Alignment.CENTRE);
   // 设置边框线
   wc.setBorder(Border.ALL, BorderLineStyle.THIN);
   // 设置单元格的背景颜色
   wc.setBackground(jxl.format.Colour.RED);
   label = new Label(1, 5, "字体", wc);
   sheet.addCell(label);
   // 设置字体
   jxl.write.WritableFont wfont = new jxl.write.WritableFont(
     WritableFont.createFont("隶书"), 20);
   WritableCellFormat font = new WritableCellFormat(wfont);
   label = new Label(2, 6, "隶书", font);
   sheet.addCell(label);
   // 写入数据
   wwb.write();
   // 关闭文件
   wwb.close();
   long end = System.currentTimeMillis();
   System.out.println("----完成该操作共用的时间是:" + (end - start) / 1000); 
  } catch (Exception e) {
   System.out.println("---出现异常---");
   e.printStackTrace();
  }
  return "/yw/jxlCreate.jsp";
 }

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值