Wordpress和drupal开发,宜宾seo网站建设,潍坊网站制作,宁夏建设厅网站6springMVC(4)---生成excel文件并导出在开发过程中#xff0c;需要将数据库中的数据以excel表格的方式导出。首先说明。我这里用的是Apache的POI项目#xff0c;它是目前比较成熟的HSSF接口#xff0c;用来处理Excel对象。其实POI不仅仅只能处理excel#xff0c;它还可以处理…springMVC(4)---生成excel文件并导出在开发过程中需要将数据库中的数据以excel表格的方式导出。首先说明。我这里用的是Apache的POI项目它是目前比较成熟的HSSF接口用来处理Excel对象。其实POI不仅仅只能处理excel它还可以处理word、PowerPoint、Visio、甚至Outlook。一.首先介绍利用POI如何生成excel。首先在生成Excel前我们需要理解一下Excel文件的组织形式。在POI中是这样理解的一个Excel文件对应一个workbook一个workerbook是有若干个sheet组成的。一个sheet有多个row一个row一般存在多个cell。对于上面的四个名词我们可以在下图理解对于生成ExcelPOI提供了如下几个基本对象HSSFWorkbook excel 的文档对象HSSFSheet excel 的表单HSSFRow excel 的行HSSFCell excel 的格子单元从上面的图片和Excel的组织结构我们就可以明白创建Excel的步骤。1、生成文档对象HSSHWorkbook。2、通过HSSFWorkbook生成表单HSSFSheet。3、通过HSSFSheet生成行HSSFRow4、通过HSSFRow生成单元格HSSFCell。下面展示代码第一步、导入jar包org.apache.poipoi-ooxml3.9第二步创建Model对象public classPerson {privateString id;privateString name;privateString password;privateString age;publicPerson(String id, String name, String password, String age) {super();this.id id;this.name name;this.password password;this.age age;}//提供set和get方法}第三步.下载界面 exportexcel.jspfunctiondownload(){varurldownload_excel?id10name张三;window.open(url);}第四步、ExcleController.javaimportjava.io.UnsupportedEncodingException;importjava.net.URLEncoder;importjavax.servlet.ServletOutputStream;importjavax.servlet.http.HttpServletResponse;importorg.springframework.stereotype.Controller;importorg.springframework.web.bind.annotation.RequestMapping;importorg.springframework.web.bind.annotation.RequestParam;importorg.springframework.web.bind.annotation.ResponseBody;importcom.ssm.service.impl.ExcleImpl;Controllerpublic classExcleController {//这里直接new了ExcleImpl excleImplnewExcleImpl();RequestMapping(value/jsp/download_excel)//获取url链接上的参数public ResponseBody String dowm(HttpServletResponse response,RequestParam(id) String id,RequestParam(name) String name){response.setContentType(application/binary;charsetUTF-8);try{ServletOutputStream outresponse.getOutputStream();try{//设置文件头最后一个参数是设置下载文件名(这里我们叫张三.pdf)response.setHeader(Content-Disposition, attachment;fileName URLEncoder.encode(name.xls, UTF-8));}catch(UnsupportedEncodingException e1) {e1.printStackTrace();}String[] titles { 用户id, 用户姓名, 用户密码, 用户年龄};excleImpl.export(titles, out);return success;}catch(Exception e){e.printStackTrace();return 导出信息失败;}}}第五步、ExcleImpl 报表导出实现层importjava.util.ArrayList;importjavax.servlet.ServletOutputStream;importorg.apache.poi.hssf.usermodel.HSSFCell;importorg.apache.poi.hssf.usermodel.HSSFCellStyle;importorg.apache.poi.hssf.usermodel.HSSFRow;importorg.apache.poi.hssf.usermodel.HSSFSheet;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importcom.ssm.model.Person;public classExcleImpl {public void export(String[] titles, ServletOutputStream out) throwsException{try{//第一步创建一个workbook对应一个Excel文件HSSFWorkbook workbook newHSSFWorkbook();//第二步在webbook中添加一个sheet,对应Excel文件中的sheetHSSFSheet hssfSheet workbook.createSheet(sheet1);//第三步在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制shortHSSFRow row hssfSheet.createRow(0);//第四步创建单元格并设置值表头 设置表头居中HSSFCellStyle hssfCellStyle workbook.createCellStyle();//居中样式hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);HSSFCell hssfCell null;for (int i 0; i titles.length; i) {hssfCell row.createCell(i);//列索引从0开始hssfCell.setCellValue(titles[i]);//列名1hssfCell.setCellStyle(hssfCellStyle);//列居中显示}//第五步写入实体数据Person person1new Person(1,张三,123,26);Person person2new Person(2,李四,123,18);Person person3new Person(3,王五,123,77);Person person4new Person(4,徐小筱,123,1);//这里我把list当做数据库啦ArrayList listnew ArrayList();list.add(person1);list.add(person2);list.add(person3);list.add(person4);for (int i 0; i list.size(); i) {row hssfSheet.createRow(i1);Person personlist.get(i);//第六步创建单元格并设置值String id null;if(person.getId() ! null){idperson.getId();}row.createCell(0).setCellValue(id);String name ;if(person.getName() ! null){nameperson.getName();}row.createCell(1).setCellValue(name);String password ;if(person.getPassword() ! null){passwordperson.getPassword();}row.createCell(2).setCellValue(password);String agenull;if(person.getAge() !null){ageperson.getAge();}row.createCell(3).setCellValue(age);}//第七步将文件输出到客户端浏览器try{workbook.write(out);out.flush();out.close();}catch(Exception e) {e.printStackTrace();}}catch(Exception e){e.printStackTrace();throw new Exception(导出信息失败);}}}第六步最终效果当我点击报表导出按钮完美想的太多做的太少中间的落差就是烦恼要么去做要么别想 少尉【11】