博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
POI之Excel导出
阅读量:6118 次
发布时间:2019-06-21

本文共 5302 字,大约阅读时间需要 17 分钟。

1,在maven的pom文件中添加依赖

1 
2
org.apache.poi
3
poi-ooxml
4
${poi.version}
5

2,在Controller中添加转发接口

1 @ResponseBody 2 @RequestMapping(value="exportExcel", method={RequestMethod.GET, RequestMethod.POST}) 3 public String exportExcel(HttpServletRequest request, String name, String data) { 4     JSONObject result = new JSONObject(); 5     result.put("code", 0); 6     result.put("msg", "success"); 7     try { 8         HSSFWorkbook workbook = new HSSFWorkbook(); 9         Method method = IExportExcelService.class.getDeclaredMethod(name + "Export", new Class[]{HSSFWorkbook.class, String.class});10         method.invoke(exportExcelService, workbook, data);11         String filename = name + GhFormatUtils.getFileDate() + ".xls";12         String realpath = request.getServletContext().getRealPath("/");13         String filepath = filedir + "/" + filename;14         FileOutputStream fos = new FileOutputStream(realpath + filepath);15         workbook.write(fos);16         fos.close();17         workbook.close();18         result.put("data", filepath);19     } catch (Exception e) {20         e.printStackTrace();21         result.put("code", -1);22         result.put("msg", e.getMessage());23     }24     return result.toString();25 }

3,在Service层编写相应生成格式的pdf

1 //公共函数 2 public void exportExcel(HSSFSheet sheet, String[] keys, JSONArray data) throws Exception { 3     sheet.setDefaultColumnWidth(15); 4     JSONObject head = (JSONObject)data.remove(0); 5     int lastRowNum = sheet.getLastRowNum(); 6     //创建标题行 7     HSSFRow headRow = sheet.createRow(++lastRowNum); 8     HSSFCellStyle headerStyle = sheet.getWorkbook().createCellStyle(); 9     headerStyle.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND);10     headerStyle.setFillForegroundColor(HSSFColor.GREY_25_PERCENT.index);11     headerStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);12     headerStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);13     headerStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);14     headerStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);15     for(int i = 0; i < keys.length; i++) {16         HSSFCell cell = headRow.createCell(i);17         cell.setCellValue(head.getString(keys[i]));18         cell.setCellStyle(headerStyle);19     }20     HSSFCellStyle dataStyle = sheet.getWorkbook().createCellStyle();21     dataStyle.setBorderTop(HSSFCellStyle.BORDER_THIN);22     dataStyle.setBorderBottom(HSSFCellStyle.BORDER_THIN);23     dataStyle.setBorderLeft(HSSFCellStyle.BORDER_THIN);24     dataStyle.setBorderRight(HSSFCellStyle.BORDER_THIN);25     //创建数据明细行26     for(int i = 0; i < data.size(); i++) {27         HSSFRow row = sheet.createRow(++lastRowNum);28         JSONObject rowData = data.getJSONObject(i);29         for(int j = 0; j < keys.length; j++) {30             HSSFCell cell = row.createCell(j);31             cell.setCellValue(rowData.getString(keys[j]));32             cell.setCellStyle(dataStyle);33         }34     }35 }36 //具体处理函数37 @Override38 public void offerExport(HSSFWorkbook workbook, String dataStr) throws Exception {39     JSONObject data = JSONObject.parseObject(dataStr);40     JSONArray detail = data.getJSONArray("detail");41     Map
dict = basMgmtService.getDictMap("col1");42 //数据处理,用数据字典翻译数据43 for(int i = 0; i < detail.size(); i++) {44 JSONObject obj = detail.getJSONObject(i);45 obj.put("col1", dict.get(obj.getString("col1")));46 }47 JSONObject head = new JSONObject();48 String keys[] = {"col1","col2"};49 head.putAll(new HashMap
(){
{50 put(keys[0], "第一列名称");51 put(keys[1], "第二列名称");52 //......53 }});54 detail.add(0, head);55 //创建工作页56 HSSFSheet sheet = workbook.createSheet(data.getString("titleName"));57 //创建表头标题58 sheet.addMergedRegion(new CellRangeAddress(0, 0, 0, keys.length - 1));59 HSSFRow titleRow = sheet.createRow(0);60 HSSFCell titleCell = titleRow.createCell(0);61 titleCell.setCellValue(data.getString("titleName"));62 HSSFCellStyle titleStyle = workbook.createCellStyle();63 titleStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);64 titleCell.setCellStyle(titleStyle);65 exportExcel(sheet, keys, detail);66 }

4,前端请求

1 //公共导出Excel 2 function commExcel(url, name, data, appPath) { 3     $.ajax({ 4         url : url, 5         type : 'post', 6         dataType : "json", 7         data : { 8             name : name, 9             data : JSON.stringify(data)10         },11         async : true,12         success : function(result,status,xhr) {13             if(result.code == 0) {14                 $("")[0].click();15             } else {16                 var msg = result.msg;17                 if(!msg) {18                     msg = "请求失败,请手动刷新页面!";19                 }20                 top.layer.alert(msg);21             }22         },23         error : function(xhr,status,err) {24             top.layer.alert(err);25         }26     });27 }28 //页面导出Excel29 function exportExcel() {30     var url = "${adminPath}/finance/export/exportExcel";31     var data = {32         titleName : "excel名称",33         customerName: "用户名称",34         detail : detail35     };36     commExcel(url, "offer", data, "${appPath}");37 }

转载地址:http://cwmka.baihongyu.com/

你可能感兴趣的文章
并行程序设计学习心得1——并行计算机存储
查看>>
JAVA入门到精通-第86讲-半双工/全双工
查看>>
bulk
查看>>
js document.activeElement 获得焦点的元素
查看>>
C++ 迭代器运算
查看>>
【支持iOS11】UITableView左滑删除自定义 - 实现多选项并使用自定义图片
查看>>
day6-if,while,for的快速掌握
查看>>
JavaWeb学习笔记(十四)--JSP语法
查看>>
【算法笔记】多线程斐波那契数列
查看>>
java8函数式编程实例
查看>>
jqgrid滚动条宽度/列显示不全问题
查看>>
在mac OS10.10下安装 cocoapods遇到的一些问题
查看>>
angularjs表达式中的HTML内容,如何不转义,直接表现为html元素
查看>>
css技巧
查看>>
Tyvj 1728 普通平衡树
查看>>
[Usaco2015 dec]Max Flow
查看>>
javascript性能优化
查看>>
多路归并排序之败者树
查看>>
java连接MySql数据库
查看>>
转:Vue keep-alive实践总结
查看>>