jxl导出excel

       上篇中介绍的是jxl解析导入的excel中的数据,接下来介绍生成excel并导出数据到excel中。

       导出的步骤大致可概括为:

       1. 通过Workbook类创建一个可写入的工作簿对象(WritableWorkbook)

       2. 创建工作表sheet

       3. 往sheet中填充数据(填充数据时,jxl提供了String、Number、Boolean、DataTime几种数据类型.在excel单元格有值的情况下,默认的是label类型)

       4. 将缓存中的数据写入Excel工作簿

       5. 关闭Excel工作簿


public void exportExcel() throws Exception {
		
		HttpServletResponse response=ServletActionContext.getResponse();

		// 设置excel文件名
		String excelName = new SimpleDateFormat("yyyyMMddhhmmss").format(
				new Date()).toString();
		
		// 设置response头信息
		response.reset();
		response.setContentType("application/vnd.ms-excel");
		response.setHeader("Content-disposition", "attachment; filename="
				+ excelName + ".xls");

		// 创建工作簿并发送到浏览器
		try {
			OutputStream out = response.getOutputStream();
			
			//1. 创建一个可编辑的工作簿
			WritableWorkbook wwb = Workbook.createWorkbook(out);
			
			//2. 创建一个工作表
			WritableSheet ws = wwb.createSheet("sheet1", 0);
			
			//3. 往sheet中填充数据
			//第一行第一列填充string类型,第一行第二列填充numer类型,第三列填充boolean,第四列填充时间
			Label label = new Label(0,0,"string title");//参数分别为列、行、值
			Number number = new Number(1,0,1);
			Boolean labelB = new Boolean(2,0,false);
			DateTime labelDT = new DateTime(3,0,new java.util.Date());
			ws.addCell(label);
			ws.addCell(number);
			ws.addCell(labelB);
			ws.addCell(labelDT);
					
			//4. 将缓存中的内容写入Excel工作簿
			wwb.write();

			//5. 关闭Excel工作簿
			wwb.close();
		} catch (Exception e) {
			e.printStackTrace();
			throw new Exception("导出Excel失败");
		}
	}

导出的excel,除了设置数据类型外,还可以设置单元格格式。

		//设置(0,0)单元格为Label类型,设置字体、字号、颜色、内容
		WritableFont wf = new WritableFont(WritableFont.ARIAL,10,WritableFont.BOLD,false,UnderlineStyle.NO_UNDERLINE,jxl.format.Colour.RED);
		WritableCellFormat wcff = new WritableCellFormat(wf);
		Label label = new Label(0,0,"string title",wcff);
		ws.addCell(label);
			
		//设置(0,1)单元格为Number类型,样式精确到0.01
		NumberFormat nf = new NumberFormat("#.##"); 
		WritableCellFormat wcfN = new WritableCellFormat(nf); 
		Number labelNF = new Number(1, 0, 3.1415926, wcfN); 
		ws.addCell(labelNF); 
			
		//设置(0.2)单元格为Boolean类型
		Boolean labelB = new Boolean(2,0,false);
		ws.addCell(labelB);
			
		//设置(0,3)单元格为DataTime类型,格式为dd MM yyyy hh:mm:ss
		jxl.write.DateFormat df = new jxl.write.DateFormat("dd MM yyyy hh:mm:ss"); 
		jxl.write.WritableCellFormat wcfDF = new jxl.write.WritableCellFormat(df); 
		jxl.write.DateTime labelDTF = new jxl.write.DateTime(3, 0, new java.util.Date(), 
		wcfDF); 
		ws.addCell(labelDTF);

这样,导出的excel就是经过样式修饰的了。

 


你可能感兴趣的:(jxl导出excel)