SpringMVC+POI 实现Excel按模板方式简单导出功能
2015-11-25 11:23
841 查看
上节《SpringMvc+POI 处理Excel的导入操作》简单介绍Excel文件导入功能,本节写一个简单的Excel文件导出功能。
Excel文件导出时采用模板的方式导出,该方法只需要简单的几步即可完成。首先读取Excel模板文件,将数据写到的模板文件中,最终另存为新的Excel文件。这样既不破坏模板文件,同时对于多行表头的excel处理更加方便。
环境
JDK7+ Tomcat7.x+ Spring4.1.8
说明
ExportExcelControl.java :Excel文件导出Control类
ExportExcelUtil.java :Excel文件导出方法
Main.jsp : view请求页
模板文件:存放在WEB-INF/ExcelDemoFile/测试模板.xlsx
ExportExcelControl.java
ExportExcelUtil.java
Main.jsp
代码下载:http://download.csdn.net/download/onepersontz/9298819
Excel文件导出时采用模板的方式导出,该方法只需要简单的几步即可完成。首先读取Excel模板文件,将数据写到的模板文件中,最终另存为新的Excel文件。这样既不破坏模板文件,同时对于多行表头的excel处理更加方便。
环境
JDK7+ Tomcat7.x+ Spring4.1.8
说明
ExportExcelControl.java :Excel文件导出Control类
ExportExcelUtil.java :Excel文件导出方法
Main.jsp : view请求页
模板文件:存放在WEB-INF/ExcelDemoFile/测试模板.xlsx
ExportExcelControl.java
package com.poiexcel.control; import java.io.File; import java.io.OutputStream; import java.net.URLEncoder; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import com.poiexcel.util.ExportExcelUtil; import com.poiexcel.vo.InfoVo; @Controller @RequestMapping("/ExportExcel/*") public class ExportExcelControl { /** * 描述:通过 jquery.form.js 插件提供的ajax方式导出Excel * @param request * @param response * @throws Exception */ @RequestMapping(value="ajaxExport.do",method={RequestMethod.GET,RequestMethod.POST}) public String ajaxUploadExcel(HttpServletRequest request,HttpServletResponse response) throws Exception { System.out.println("通过 jquery.form.js 提供的ajax方式导出文件!"); OutputStream os = null; Workbook wb = null; //工作薄 try { //模拟数据库取值 List<InfoVo> lo = new ArrayList<InfoVo>(); for (int i = 0; i < 8; i++) { InfoVo vo = new InfoVo(); vo.setCode("110"+i); vo.setDate("2015-11-0"+i); vo.setMoney("1000"+i+".00"); vo.setName("北京中支0"+i); lo.add(vo); } //导出Excel文件数据 ExportExcelUtil util = new ExportExcelUtil(); File file =util.getExcelDemoFile("/ExcelDemoFile/测试模板.xlsx"); String sheetName="sheet1"; wb = util.writeNewExcel(file, sheetName,lo); String fileName="机构码.xlsx"; response.setContentType("application/vnd.ms-excel"); response.setHeader("Content-disposition", "attachment;filename="+ URLEncoder.encode(fileName, "utf-8")); os = response.getOutputStream(); wb.write(os); } catch (Exception e) { e.printStackTrace(); } finally{ os.flush(); os.close(); wb.close(); } return null; } }
ExportExcelUtil.java
package com.poiexcel.util; import java.io.File; import java.io.FileInputStream; import java.util.List; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.CellStyle; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import com.poiexcel.vo.InfoVo; public class ExportExcelUtil { /** * 描述:根据文件路径获取项目中的文件 * @param fileDir 文件路径 * @return * @throws Exception */ public File getExcelDemoFile(String fileDir) throws Exception{ String classDir = null; String fileBaseDir = null; File file = null; classDir = Thread.currentThread().getContextClassLoader().getResource("/").getPath(); fileBaseDir = classDir.substring(0, classDir.lastIndexOf("classes")); file = new File(fileBaseDir+fileDir); if(!file.exists()){ throw new Exception("模板文件不存在!"); } return file; } public Workbook writeNewExcel(File file,String sheetName,List<InfoVo> lis) throws Exception{ Workbook wb = null; Row row = null; Cell cell = null; FileInputStream fis = new FileInputStream(file); wb = new ImportExcelUtil().getWorkbook(fis, file.getName()); //获取工作薄 Sheet sheet = wb.getSheet(sheetName); //循环插入数据 int lastRow = sheet.getLastRowNum()+1; //插入数据的数据ROW CellStyle cs = setSimpleCellStyle(wb); //Excel单元格样式 for (int i = 0; i < lis.size(); i++) { row = sheet.createRow(lastRow+i); //创建新的ROW,用于数据插入 //按项目实际需求,在该处将对象数据插入到Excel中 InfoVo vo = lis.get(i); if(null==vo){ break; } //Cell赋值开始 cell = row.createCell(0); cell.setCellValue(vo.getCode()); cell.setCellStyle(cs); cell = row.createCell(1); cell.setCellValue(vo.getName()); cell.setCellStyle(cs); cell = row.createCell(2); cell.setCellValue(vo.getDate()); cell.setCellStyle(cs); cell = row.createCell(3); cell.setCellValue(vo.getMoney()); cell.setCellStyle(cs); } return wb; } /** * 描述:设置简单的Cell样式 * @return */ public CellStyle setSimpleCellStyle(Workbook wb){ CellStyle cs = wb.createCellStyle(); cs.setBorderBottom(CellStyle.BORDER_THIN); //下边框 cs.setBorderLeft(CellStyle.BORDER_THIN);//左边框 cs.setBorderTop(CellStyle.BORDER_THIN);//上边框 cs.setBorderRight(CellStyle.BORDER_THIN);//右边框 cs.setAlignment(CellStyle.ALIGN_CENTER); // 居中 return cs; } }
Main.jsp
<div> 文件以模板的方式导出,模板存放在项目中(WEB-INF/ExcelDemoFile/) </div> </br> <form action="ExportExcel/ajaxExport.do" method="post" id="form2"> <input type="submit" id="exportExcel" name="exportExcel" value="Excel导出"/> </form>
代码下载:http://download.csdn.net/download/onepersontz/9298819
相关文章推荐
- 使用Python生成Excel格式的图片
- Excel 曝出 Power Query 安全漏洞,1.2 亿用户易受远程 DDE 攻击
- VBA将excel数据表生成JSON文件
- excel vba 限制工作表的滚动区域代码
- excel vba 高亮显示当前行代码
- SQL 导入导出Excel数据的语句
- 文本、Excel、Access数据导入SQL Server2000的方法
- C#导出数据到Excel文件的方法
- Vbscript生成Excel报表的常用操作总结
- C#实现导入CSV文件到Excel工作簿的方法
- C#基于NPOI生成具有精确列宽行高的Excel文件的方法
- 总提示[Microsoft][ODBC Excel Driver] 数值字段溢出官方解决方法
- C#将Sql数据保存到Excel文件中的方法
- VC6.0实现读取Excel数据的方法
- 把excel表格里的数据导入sql数据库的两种方法
- access dbase excel foxpro 数据库浏览器V3.1版 下载
- C#实现把txt文本数据快速读取到excel中
- C#自定义导出数据到Excel的类实例
- 使用PHPExcel操作Excel用法实例分析
- C#实现Excel导入sqlite的方法