公共POI导出Excel方法详解

  

最早开始的时候做过一些数据Excel导出的功能,但是到后期每一次导出都需要写一些差不多类似的代码,稍微研究了一下写了个公共的导出方法。

  

这里用的是芋泥,然后写成了一个公共类,传入设置好格式的数据,就能弹出下载框。

  

(补充下getResponse的方法,之前没注意这个有继承!)
  

        包com.hwt.glmf.common;      进口java.io.IOException;   进口java.io.OutputStream;   进口java.util.ArrayList;   进口并不知道;      进口javax.servlet.http.HttpServletResponse;      进口org.apache.poi.hssf.usermodel.HSSFCell;   进口org.apache.poi.hssf.usermodel.HSSFCellStyle;   进口org.apache.poi.hssf.usermodel.HSSFFont;   进口org.apache.poi.hssf.usermodel.HSSFRichTextString;   进口org.apache.poi.hssf.usermodel.HSSFRow;   进口org.apache.poi.hssf.usermodel.HSSFSheet;   进口org.apache.poi.hssf.usermodel.HSSFWorkbook;   进口org.apache.poi.hssf.util.CellRangeAddress;   进口org.apache.poi.hssf.util.HSSFColor;/* *   *导出Excel公共方法   * @version 1.0   *   * @author wangcp   *   */公共类ExportExcel ActionSupport延伸实现ServletRequestAware {//显示的导出表的标题   私人字符串标题;//导出表的列名   私人String [] rowName;      私人List<对象[]比;dataList=new ArrayList<对象[]祝辞();      HttpServletResponse反应;//构造方法,传入要导出的数据   公共ExportExcel(字符串标题、String [] rowName List<对象[]比;dataList) {   这一点。dataList=dataList;   这一点。rowName=rowName;   这一点。标题=标题;   }/*   *导出数据   * */公共空间出口()抛出异常{   尝试{   HSSFWorkbook工作簿=new HSSFWorkbook ();//创建工作簿对象   HSSFSheet表=workbook.createSheet(标题);//创建工作表//产生表格标题行   HSSFRow rowm=sheet.createRow (0);   HSSFCell cellTiltle=rowm.createCell (0);//表样式定义【getColumnTopStyle ()/getStyle()均为自定义方法——在下面-可扩展】   HSSFCellStyle columnTopStyle=this.getColumnTopStyle(工作簿);//获取列头样式对象   HSSFCellStyle风格=this.getStyle(工作手册);//单元格样式对象      表。addMergedRegion(新CellRangeAddress (0, 1, 0, (rowName.length-1)));   cellTiltle.setCellStyle (columnTopStyle);   cellTiltle.setCellValue(标题);//定义所需列数   int columnNum=rowName.length;   HSSFRow rowRowName=sheet.createRow (2);//在索引2的位置创建行(最顶端的行开始的第二行)//将列头设置到表的单元格中   (int n=0; n< columnNum; n + +) {   HSSFCell cellRowName=rowRowName.createCell (n);//创建列头对应个数的单元格   cellRowName.setCellType (HSSFCell.CELL_TYPE_STRING);//设置列头单元格的数据类型   HSSFRichTextString文本=new HSSFRichTextString (rowName [n]);   cellRowName.setCellValue(文本);//设置列头单元格的值   cellRowName.setCellStyle (columnTopStyle);//设置列头单元格样式   }//将查询出的数据设置到表对应的单元格中   for (int i=0; i< dataList.size();我+ +){      []对象obj=dataList.get (i);//遍历每个对象   HSSFRow行=sheet.createRow(+ 3);//创建所需的行数      for (int j=0;j公共POI导出Excel方法详解