使用struts2和poi导出excel文档

poi目前应该是比较流行的操作excel的工具了,这几天做了个struts2和poi结合使用来实现导出excel的功能,个人觉得还是比较实用的,代码阅读起来也很简单,下来就来分享下我的心得

1 struts2的下载excel文件机制

struts2的action中使用poi和输入输出流把二进制数据通过流的形式响应给客户端,客户端浏览器作出响应的处理,如弹出文件下载对话框

2 poi的使用方法

poi解析或生成excel网上资料特别多,,这里我就不给出代码了

3 struts文件的相关配置

<result name="export" type="stream"> <param name="contentType">application/xls;charset=UTF-8</param><param name="contentDisposition">attachment;filename="${downloadFileName}"</param><param name="inputName">excelFile</param></result>downloadFileName是下载文件的名称,可以使用固定的文件名也可以使用动态的;excelFile是InputStream的属性名称

4 action的主要内容

(1)相关属性的getter和setter方法

private InputStream excelFile;private String downloadFileName=String.valueOf(Calendar.getInstance().getTimeInMillis())+".xls";public InputStream getExcelFile() {return excelFile;}public void setExcelFile(InputStream excelFile) {this.excelFile = excelFile;}public String getDownloadFileName() {return downloadFileName;}public void setDownloadFileName(String downloadFileName) {this.downloadFileName = downloadFileName;}(2)导出excel的主要代码

public void ExcelFile(String startCardNum,String num) throws Exception {HSSFWorkbook workbook = new HSSFWorkbook();HSSFSheet sheet = workbook.createSheet();HSSFRow row = sheet.createRow(0);//单元格和工作薄名称都要设置下编码,否则有中文的时候就会出现乱码workbook.setSheetName(0, "卡号信息表" , HSSFWorkbook.ENCODING_UTF_16);HSSFCell cell1=row.createCell((short)0);cell1.setEncoding(HSSFWorkbook.ENCODING_UTF_16);cell1.setCellValue("卡号");HSSFCell cell2=row.createCell((short)1);cell2.setEncoding(HSSFWorkbook.ENCODING_UTF_16);cell2.setCellValue("密码");HSSFCell cell3=row.createCell((short)2);cell3.setEncoding(HSSFWorkbook.ENCODING_UTF_16);cell3.setCellValue("创建时间");//取得符合条件的卡号信息List<Card> all=cardService.queryCardByCondition(startCardNum, num);Iterator<Card> it=all.iterator();int j=1;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");while(it.hasNext()){row=sheet.createRow(j);Card c=it.next();row.createCell((short)0).setCellValue(c.getCardNum());row.createCell((short)1).setCellValue(c.getPassword());row.createCell((short)2).setCellValue(sdf.format(c.getCreateDate()));j++;}ByteArrayOutputStream baos = new ByteArrayOutputStream();try {workbook.write(baos);} catch (IOException e) {e.printStackTrace();}byte[] aa = baos.toByteArray();excelFile = new ByteArrayInputStream(aa,0,aa.length); try {baos.close();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}}导出的代码只是给大家一个参照,当然使用jxl导出excel也是完全可以的

(3)导出excel的总方法

public String exportCardInfo() throws Exception {String startNum=this.getRequest().getParameter("startCardNum");String num=this.getRequest().getParameter("num");ExcelFile(startNum,num);this.setDownloadFileName(String.valueOf(Calendar.getInstance().getTimeInMillis())+".xls");return "export";}代码是不是特别简单呢,如果有问题给我写评论

年轻是胜利的一半。

使用struts2和poi导出excel文档

相关文章:

你感兴趣的文章:

标签云: