最早开始的时候做过一些数据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方法详解