java简单的导出Excel文件

特点 列出List中要导入到Excel的列名#中文名,然后就完事了。具体的看看main()你就知道有多简单了。

利用POI,本工具类可以实现Excel导出和下载,话不多说,放码过来。 

1package com.fantong.ois.wms.utils; 2 3import org.apache.poi.hssf.usermodel.*; 4import org.apache.poi.hssf.util.HSSFColor; 5 6import java.io.FileOutputStream; 7import java.io.IOException; 8import java.io.OutputStream; 9import java.math.BigDecimal; 10import java.util.ArrayList; 11import java.util.HashMap; 12import java.util.List; 13import java.util.Map; 14 15/** 16 * 导出或下载Excel, 17 * Title: ExportXls<br> 18 * Description: 用#分割列与转义标题 ;标题包含*表示需要过滤该列<br> 19 * @author xiaour@github.com 20 * @createDate 2016年5月31日 21 * @version v1.0 22 */ 23public class ExportXls { 24 25 private OutputStream out;//传入OutputStream表示写入到服务器,传入HttpServletResponse则直接下载 26 27 private static String tag="#";//标题与字段分割符 28 private static String hidden="*";//隐藏标识符 29 30 public ExportXls(OutputStream out) { 31 super(); 32 this.out = out; 33 } 34 35 /** 36 * 37 *@category 38 *@throws IOException 39 *@createDate 2016年5月31日 40 * @param sheetName 41 * @param titles 字段名#中文列名 42 * @param list 43 * */ 44 @SuppressWarnings({"deprecation" }) 45 public void exportExcel(String sheetName, String[] titles, List<Map<String, Object>> list) throws IOException { 46 // 声明一个工作薄 47 @SuppressWarnings("resource") 48 HSSFWorkbook workbook = new HSSFWorkbook(); 49 // 生成一个表格 50 HSSFSheet sheet = workbook.createSheet(sheetName); 51 // 设置表格默认列宽度为15个字节 52 sheet.setDefaultColumnWidth((short) 20); 53 // 生成一个样式 54 HSSFCellStyle style = workbook.createCellStyle(); 55 // 设置这些样式 56 style.setFillForegroundColor(HSSFColor.TEAL.index); 57 style.setFillPattern(HSSFCellStyle.SOLID_FOREGROUND); 58 style.setBorderBottom(HSSFCellStyle.BORDER_THIN); 59 style.setBorderLeft(HSSFCellStyle.BORDER_THIN); 60 style.setBorderRight(HSSFCellStyle.BORDER_THIN); 61 style.setBorderTop(HSSFCellStyle.BORDER_THIN); 62 style.setAlignment(HSSFCellStyle.ALIGN_CENTER); 63 // 生成一个字体 64 HSSFFont font = workbook.createFont(); 65 font.setColor(HSSFColor.WHITE.index); 66 font.setFontHeightInPoints((short) 14); 67 font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD); 68 // 把字体应用到当前的样式 69 style.setFont(font); 70 //产生表格标题行 71 HSSFRow row = sheet.createRow(0); 72 sheet.createFreezePane( 0, 1, 0, 1 ); 73 for (int i = 0; i < titles.length; i++) { 74 if(titles[i].indexOf(hidden)<0){ 75 HSSFCell cell = row.createCell(i); 76 cell.setCellStyle(style); 77 HSSFRichTextString text=null; 78 if(titles[i].indexOf(tag)>0){ 79 text = new HSSFRichTextString(titles[i].split(tag)[1]); 80 }else { 81 text = new HSSFRichTextString(titles[i]); 82 } 83 cell.setCellValue(text); 84 } 85 } 86 String value=""; 87 for(int j=1;j<list.size()+1;j++){ 88 Map<String, Object> map=list.get(j-1); 89 row = sheet.createRow(j); 90 for(int s=0;s<titles.length;s++){ 91 if(titles[s].indexOf(hidden)<0){ 92 HSSFCell txtCell = row.createCell(s); 93 if(map!=null){ 94 Object obj=null; 95 96 if(titles[s].indexOf(tag)>0){ 97 obj=map.get(titles[s].split(tag)[0]); 98 }else { 99 obj=map.get(titles[s]); 100 } 101 String temp=obj!=null?obj.toString():""; 102 value= temp.toString(); 103 } 104 HSSFRichTextString text2 = new HSSFRichTextString(value); 105 txtCell.setCellValue(text2); 106 } 107 } 108 } 109 110 111 workbook.write(out); 112 out.flush(); 113 out.close(); 114 115 } 116 117 public static void main(String[] args) throws Exception { 118 119 //写入本地 120 OutputStream out = new FileOutputStream("d://1432026362899.xls"); 121 ExportXls ex = new ExportXls(out); 122 String [] headers={"A#标题1","B#标题2","C#标题3*"}; 123 124 List<Map<String,Object>> dataList= new ArrayList<Map<String,Object>>(); 125 for(int j=0;j<headers.length;j++){ 126 Map<String,Object> map= new HashMap<String,Object>(); 127 map.put("A",j+1); 128 map.put("B",new BigDecimal("580.63")); 129 map.put("C",null); 130 dataList.add(map); 131 } 132 133 ex.exportExcel("TEST",headers,dataList); 134 out.close(); 135 System.out.println("excel导出成功!"); 136 137 } 138 139}

上面有测试类可以直接导出到本地,下面看看怎么直接打开连接就下载吧!

1 @ResponseBody 2 @RequestMapping(value = "/download", method = { RequestMethod.GET, RequestMethod.POST }) 3 public void download(HttpServletResponse response){ 4 try { 5 6 response.setContentType("application/x-msdownload"); 7 8 response.setHeader("Content-Disposition", "attachment; filename='xiaour@github.com.xls'"); 9 10 response.setCharacterEncoding("utf-8"); 11 12 //可以将output输出到服务器 13 OutputStream outputStream=response.getOutputStream(); 14 15 ExportXls ex = new ExportXls(outputStream); 16 17 String [] headers={"id#编号","name#名称","operation_time#最近更新时间"}; 18 19 ex.exportExcel("报表",headers,dataList); 20 21 } 22 23 } catch (Exception e) { 24 logger.error(e); 25 } 26 }
点赞
收藏

评论区

加载中...

相关推荐

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

vue+iview中的table表格导出excel表格

一、iveiw框架中table中有exportCsv()方法可以导出.csv后缀文件,类似于excel文件,但是并不是excel文件。二、实现table表格导出excel文件利用Blob.js和Export2Excel.js两个文件实现  1.Blob.js和Export2Excel.js文件    链接:https://pan.baid

java使用POI将数据导出放入Excel

本文主要是将数据库取出的数据按照自定义的行列格式导出到excel中,POI则是实现我们需求所用到的技术。POI介绍使用springboot导入相关依赖获取数据(自行处理)完整代码实例:创建excel,将数据写入excel1.POI介绍要想使用POI对Excel进行操作,我们需要先了

java导出多sheet的excel

excel工具类,适合单sheet或多sheet的excel表格导出packageUtil;importorg.apache.poi.hssf.usermodel.HSSFWorkbook;importorg.apache.poi.ss.usermodel.\;importjavax.servlet.ServletOut

HuTool工具类使用之Excel文档的导入导出

HuTool工具类使用之Excel文档的导入导出前言在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel导入导出功能,可以大幅度减少今后开发中Excel的导入导出的相关操作。

Java解析excel工具easyexcel助你快速简单避免OOM[图]

Java解析excel工具easyexcel助你快速简单避免OOM\图\Java解析、生成Excel比较有名的框架有Apachepoi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗