jxl.jar下载:点击打开链接
直接上代码:
/** * */ package cn.com.jsoft.creator.plugin.km.common.utils; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.util.Iterator; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletResponse; import jxl.Workbook; import jxl.format.Alignment; import jxl.write.Colour; import jxl.write.Label; import jxl.write.WritableCellFormat; import jxl.write.WritableSheet; import jxl.write.WritableWorkbook; /** * @author geoffrey * @date 2013-2-18 */ public class JxlExcelUtils { /** * @author * @param objData 导出内容数组 * @param sheetName 导出工作表的名称 * @param columns 导出Excel的表头数组 * @return */ public static int exportToExcel(HttpServletResponse response, List objData, String sheetName,String[] columns) { int flag = 0; //声明工作簿jxl.write.WritableWorkbook WritableWorkbook wwb; try { //根据传进来的file对象创建可写入的Excel工作薄 wwb = Workbook.createWorkbook(response.getOutputStream()); /* * 创建一个工作表、sheetName为工作表的名称、"0"为第一个工作表 * 打开Excel的时候会看到左下角默认有3个sheet、"sheet1、sheet2、sheet3"这样 * 代码中的"0"就是sheet1、其它的一一对应。 * createSheet(sheetName, 0)一个是工作表的名称,另一个是工作表在工作薄中的位置 */ WritableSheet ws = wwb.createSheet(sheetName, 0); //创建单元格样式 WritableCellFormat wcf = new WritableCellFormat(); //背景颜色 wcf.setBackground(jxl.format.Colour.YELLOW); /* * 这个是单元格内容居中显示 * 还有很多很多样式 */ wcf.setAlignment(Alignment.CENTRE); //判断一下表头数组是否有数据 if (columns != null && columns.length > 0) { //循环写入表头 for (int i = 0; i < columns.length; i++) { /* * 添加单元格(Cell)内容addCell() * 添加Label对象Label() * 数据的类型有很多种、在这里你需要什么类型就导入什么类型 * 如:jxl.write.DateTime 、jxl.write.Number、jxl.write.Label * Label(i, 0, columns[i], wcf) * 其中i为列、0为行、columns[i]为数据、wcf为样式 * 合起来就是说将columns[i]添加到第一行(行、列下标都是从0开始)第i列、样式为什么"色"内容居中 */ ws.addCell(new Label(i, 0, columns[i], wcf)); } //判断表中是否有数据 if (objData != null && objData.size() > 0) { //循环写入表中数据 for (int i = 0; i < objData.size(); i++) { //转换成map集合{activyName:测试功能,count:2} Map map = (Map)objData.get(i); //循环输出map中的子集:既列值 int j=0; for(Object o:map.keySet()){ //ps:因为要“”通用”“导出功能,所以这里循环的时候不是get("Name"),而是通过map.get(o) ws.addCell(new Label(j,i+1,String.valueOf(map.get(o)))); j++; } } } //写入Exel工作表 wwb.write(); //关闭Excel工作薄对象 wwb.close(); } } catch (Exception ex) { ex.printStackTrace(); System.out.println(ex.getMessage()); flag = 1; } return flag; } /** * 下载excel * @author * @param response * @param filename 文件名 ,如:20110808.xls * @param listData 数据源 * @param sheetName 表头名称 * @param columns 列名称集合,如:{物品名称,数量,单价} */ public static void exportexcle(HttpServletResponse response,String filename,List listData,String sheetName,String[] columns) { //调用上面的方法、生成Excel文件 response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-Disposition", "attachment;filename="+filename); exportToExcel(response, listData, sheetName, columns); } }
页面调用:
List listData = toolbarClickService.toolbar_click(page, toolbarclick, beginDate, endDate).getDataList(); //这里是你的数据集合 String filename = "toolbarclickToExcel.xls"; String sheetName = "工具栏点击记录"; String[] columns = {"登陆帐号","工具栏名称","访问时间 "}; jxlUtils.exportexcle(response, filename, listData, sheetName, columns);
页面数据:
导出来的数据: