package cn.com.bcl.util; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; public class ExcelUtil { /** * 導出Excel * @param sheetName sheet名稱 * @param title 標題 * @param list 內容 * @param wb HSSFWorkbook對象 * @return */ public static HSSFWorkbook getHSSFWorkbook(String sheetName,String []title,List<String[]>list, HSSFWorkbook wb){ // 第一步,建立一個HSSFWorkbook,對應一個Excel文件 if(wb == null){ wb = new HSSFWorkbook(); } // 第二步,在workbook中添加一個sheet,對應Excel文件中的sheet HSSFSheet sheet = wb.createSheet(sheetName); // 第三步,在sheet中添加表頭第0行,注意老版本poi對Excel的行數列數有限制 HSSFRow row = sheet.createRow(0); // 第四步,建立單元格,並設置值表頭 設置表頭居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 建立一個居中格式 //聲明列對象 HSSFCell cell = null; //建立標題 for(int i=0;i<title.length;i++){ cell = row.createCell(i); cell.setCellValue(title[i]); cell.setCellStyle(style); } //建立內容 for(int i=0;i<list.size();i++){ row = sheet.createRow(i + 1); for(int j=0;j<list.get(i).length;j++){ //將內容按順序賦給對應的列對象 row.createCell(j).setCellValue(list.get(i)[j]); } } return wb; } }
@Controller @RequestMapping(value = "/channellog") public class ChannelLogController extends BaseController { @Resource(name = "channelLogService") private ChannelLogService channelLogService; /** * 導出excel * * @param page * @throws Exception */ @RequestMapping(value = "/exportExcel") public void exportExcel(HttpServletRequest request, HttpServletResponse response) throws Exception { logBefore(logger, Jurisdiction.getUsername() + "列表channelLog"); List<Map<String, Object>> varList = channelLogService.dataList(); // 列出channel_log列表 String fileName = "操做日誌" + System.currentTimeMillis() + ".xls"; String sheetName = "操做日誌"; String[] title = new String[] { "序號", "影廳", "操做內容", "通道號", "開始時間", "使用時長(分鐘)" }; //內容封裝 List<String[]> contents = new ArrayList<>(); for (int i = 0; i < varList.size(); i++) { String[] str = new String[title.length]; Map<String, Object> map = varList.get(i); str[0] = String.valueOf(i+1); str[1] = String.valueOf(map.get("hallName")); str[2] = String.valueOf(map.get("oprationName")); str[3] = String.valueOf(map.get("channelNo")); str[4] = String.valueOf(map.get("startTime")); str[5] = String.valueOf(map.get("useTime") == null ? "" : map.get("useTime")); contents.add(str); } // 建立HSSFWorkbook HSSFWorkbook wb = ExcelUtil.getHSSFWorkbook(sheetName, title, contents, null); try { this.setResponseHeader(response, fileName); OutputStream os = response.getOutputStream(); wb.write(os); os.flush(); os.close(); wb.close(); } catch (Exception e) { e.printStackTrace(); } } // 發送響應流方法 private void setResponseHeader(HttpServletResponse response, String fileName) { try { try { fileName = new String(fileName.getBytes(), "ISO8859-1"); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } response.setContentType("application/octet-stream"); response.setHeader("Content-Disposition", "attachment;filename=\"" + fileName+"\""); response.addHeader("Pargam", "no-cache"); response.addHeader("Cache-Control", "no-cache"); } catch (Exception ex) { ex.printStackTrace(); } } }
在這一步也只須要完成:a>查詢出結果集;b>對結果集進行封裝爲指定的格式便可java
$("#exportExcel").click(function(){ $("#Form").attr("action", "channellog/exportExcel.do"); $("#Form").submit(); })