public void exportBusServiceCard(List<Map> l,Map<String, Object> params){ String []tableHeader={"序号","受理号","照片","姓名","从业类别","培训日期","初次领证日期","有效期","考试合格证号"}; short cellNumber=(short)tableHeader.length; //表的列数 HSSFWorkbook workbook = new HSSFWorkbook(); //创建一个excel HSSFCell cell = null; //Excel的列 HSSFRow row = null; //Excel的行 HSSFCellStyle style = workbook.createCellStyle(); //设置表头的类型 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); style.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); style.setWrapText(true); HSSFCellStyle style1 = workbook.createCellStyle(); //设置数据类型 style1.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFCellStyle style2 = workbook.createCellStyle(); //设置数据类型 style2.setAlignment(HSSFCellStyle.ALIGN_RIGHT); HSSFCellStyle style3 = workbook.createCellStyle(); //设置数据类型 style3.setAlignment(HSSFCellStyle.ALIGN_CENTER); HSSFFont font = workbook.createFont(); HSSFFont font1 = workbook.createFont(); HSSFCellStyle stylegreen = workbook.createCellStyle(); //设置表头的类型 stylegreen.setAlignment(HSSFCellStyle.ALIGN_CENTER); stylegreen.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); stylegreen.setWrapText(true);//设置字体 HSSFFont green = workbook.createFont(); HSSFCellStyle styleblue = workbook.createCellStyle(); //设置表头的类型 styleblue.setAlignment(HSSFCellStyle.ALIGN_CENTER); styleblue.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); styleblue.setWrapText(true);//设置字体 HSSFFont blue = workbook.createFont(); HSSFCellStyle stylered = workbook.createCellStyle(); //设置表头的类型 stylered.setAlignment(HSSFCellStyle.ALIGN_CENTER); stylered.setVerticalAlignment(HSSFCellStyle.VERTICAL_CENTER); stylered.setWrapText(true);//设置字体 HSSFFont red = workbook.createFont(); green.setColor(HSSFColor.GREEN.index); blue.setColor(HSSFColor.BLUE.index); red.setColor(HSSFColor.RED.index); stylegreen.setFont(green); styleblue.setFont(blue); stylered.setFont(red); HSSFSheet sheet = workbook.createSheet("sheet1"); //创建一个sheet HSSFHeader header = sheet.getHeader(); String zpPath = "f:\Bus_Photo\"; HSSFPatriarch patriarch = sheet.createDrawingPatriarch(); SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd"); String time = df.format(new Date()); try { if(l.size() < 1 ) { /*header.setCenter("没有查到人员");*/ sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8));//合并单元格 row = sheet.createRow(0); cell = row.createCell(0); cell.setCellValue("没有查到结果"); font1.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色. /*font1.setFontHeight((short)400); //设置单元字体高度*/ font1.setFontHeightInPoints((short)18); style3.setFont(font1); cell.setCellStyle(style3); }else{ sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, 8));//合并单元格 row = sheet.createRow(0); cell = row.createCell(0); cell.setCellValue(time.substring(0, 4)+"年"+time.substring(5, 7)+"月"+time.substring(8)+"日公交服务卡"); font1.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色. /*font1.setFontHeight((short)400); //设置单元字体高度*/ font1.setFontHeightInPoints((short)18); style3.setFont(font1); cell.setCellStyle(style3); row = sheet.createRow(1); row.setHeight((short)400); for(int k = 0;k < cellNumber;k++) { cell = row.createCell(k);//创建第0行第k列 cell.setCellValue(tableHeader[k]);//设置第0行第k列的值 font.setColor(HSSFFont.COLOR_NORMAL); // 设置单元格字体的颜色. font.setFontHeight((short)250); //设置单元字体高度 style1.setFont(font);//设置字体风格 cell.setCellStyle(style1); } for(int i = 0 ;i < l.size() ;i++) { Map t = l.get(i); //设置各列的宽度 sheet.setColumnWidth(0,1500); sheet.setColumnWidth(1,3000); sheet.setColumnWidth(2,3660); sheet.setColumnWidth(3,3000); sheet.setColumnWidth(4,3000); sheet.setColumnWidth(5,3000); sheet.setColumnWidth(6,4000); sheet.setColumnWidth(7,3000); sheet.setColumnWidth(8,4000); //数据行 row = sheet.createRow((short) (i + 2)); row.setHeight((short)2000); //第一列 序号 cell = row.createCell(0); cell.setCellValue(i+1); cell.setCellStyle(style); //第二列受理号 if(t.get("SLH") != null){ cell = row.createCell(1); cell.setCellValue(t.get("SLH").toString()); cell.setCellStyle(style); } //第三列照片 if(t.get("IDENTIFICATION") != null) { String sfzh = t.get("IDENTIFICATION").toString(); String sfzh18 = null; if (sfzh.length() == 15) { sfzh18 = IDCardUtil.trans15to18(sfzh); } else if (sfzh.length() == 18) { sfzh18 = sfzh; } String year = null; String month = null; if (sfzh18 != null) { year = IDCardUtil.getYearPart(sfzh18); month = IDCardUtil.getMonthPart(sfzh18); } String zp = zpPath + year + "\" + month + "\" + sfzh18 + ".jpg"; File picture = new File(zp); if(!picture.exists()){ cell = row.createCell(2); cell.setCellValue(t.get("IDENTIFICATION").toString()); cell.setCellStyle(style); }else{ BufferedImage sourceImg = ImageIO.read(new FileInputStream(picture)); ByteArrayOutputStream bout = new ByteArrayOutputStream(); ImageIO.write(sourceImg,"PNG",bout); HSSFClientAnchor anchor = new HSSFClientAnchor(0, 0, 0, 0, (short) 1, (i+2), (short) 2, (i+3)); patriarch.createPicture(anchor, workbook.addPicture(bout .toByteArray(), HSSFWorkbook.PICTURE_TYPE_JPEG)); } } //第四列 姓名 if(t.get("FULLNAME") != null){ cell = row.createCell(3); cell.setCellValue(t.get("FULLNAME").toString()); cell.setCellStyle(style); } //第五列从业类别 if(t.get("GENRENAME") != null){ cell = row.createCell(4); cell.setCellValue(t.get("GENRENAME").toString()); cell.setCellStyle(style); } //第六列培训日期 if(t.get("EXAMDATE") != null) { cell = row.createCell(5); cell.setCellValue(t.get("EXAMDATE").toString()); cell.setCellStyle(style); } //第七列初领证日期 if(t.get("INITIALDATE") != null) { cell = row.createCell(6); cell.setCellValue(t.get("INITIALDATE").toString()); cell.setCellStyle(style); } //第八列 有效期 if(t.get("VALIDDATE") != null) { cell = row.createCell(7); cell.setCellValue(t.get("VALIDDATE").toString()); cell.setCellStyle(style); } //第9列合格证号 if(t.get("SERIALNUMBER") != null) { cell = row.createCell(8); cell.setCellValue(t.get("SERIALNUMBER").toString()); cell.setCellStyle(style); } } } } catch (Exception e) { e.printStackTrace(); } HttpServletResponse response = null;//创建一个HttpServletResponse对象 OutputStream os = null;//创建一个输出流对象 try { response = ServletActionContext.getResponse();//初始化HttpServletResponse对象 os = response.getOutputStream();// String headerStr ="公交服务卡人员 "; headerStr =new String(headerStr.getBytes("gb2312"), "ISO8859-1"); response.setHeader("Content-disposition","attachment; filename="+ headerStr+".xls"); response.setContentType("application/vnd.ms-excel;charset=UTF-8");//设置类型 response.setHeader("Pragma","No-cache");//设置头 response.setHeader("Cache-Control","no-cache");//设置头 response.setDateHeader("Expires", 0);//设置日期头 workbook.write(os); os.flush(); os.close(); } catch (IOException e) { e.printStackTrace(); } }