后台action:
public String exportExcel(){ this.setUserList(this.getUserService().findUserInfosByGroupID(this.getGroupID(), "regTime", 1)); HSSFWorkbook wb = new HSSFWorkbook(); HSSFSheet sheet = wb.createSheet("用户表"); HSSFRow row = sheet.createRow(0); // 第四步,创建单元格,并设置值表头 设置表头居中 HSSFCellStyle style = wb.createCellStyle(); style.setAlignment(CellStyle.ALIGN_CENTER); // 创建一个居中格式 HSSFCell cell = row.createCell(0); cell.setCellValue("账号"); cell.setCellStyle(style); cell = row.createCell(1); cell.setCellValue("姓名"); cell.setCellStyle(style); cell = row.createCell(2); cell.setCellValue("部门"); cell.setCellStyle(style); cell = row.createCell(3); cell.setCellValue("注册时间"); cell.setCellStyle(style); // 第五步,写入实体数据 实际应用中这些数据从数据库得到, for (int i = 0; i < this.getUserList().size(); i++) { row = sheet.createRow(i + 1); UserInfo user = this.getUserList().get(i); // 第四步,创建单元格,并设置值 row.createCell(0).setCellValue(user.getUserName()); row.createCell(1).setCellValue(user.getNickName()); row.createCell(2).setCellValue(user.getCompanyName()); row.createCell( 3).setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(user.getRegTime()));; } // 第六步,将文件存到指定位置 if(this.getGroupID()==0){ this.setExportfilename("全部用户"); //设置fileName }else if (this.getGroupID()==8) { this.setExportfilename("未审核用户"); }else if(this.getGroupID()==9){ this.setExportfilename("已审核用户"); } try { this.setExportfilename(new String(this.getExportfilename().getBytes(),"ISO8859-1")); this.workbook2InputStream(wb); } catch (Exception e) { logger.error(e); return ERROR; } return "exportExcel"; } private void workbook2InputStream(HSSFWorkbook workbook) throws Exception{ ByteArrayOutputStream baos = new ByteArrayOutputStream(); workbook.write(baos); baos.flush(); byte[] aa = baos.toByteArray(); excelStream = new ByteArrayInputStream(aa, 0, aa.length); baos.close(); }
struts.xml 配置
<action name="exportexcel" class="egusermanagerAction" method="exportExcel"> <result name="exportExcel" type="stream"> <param name="contentType">application/vnd.ms-excel</param> <param name="inputName">excelStream</param> <param name="contentDisposition">attachment;filename="${exportfilename}.xls"</param> <param name="bufferSize">4024</param> </result> <result name="error">/WEB-INF/egpage/intercepthtml.jsp</result> </action>