poi工具类的概述:
 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
结构:

  • HSSF - 提供读写Microsoft Excel格式档案的功能。
  • XSSF - 提供读写Microsoft Excel OOXML格式档案的功能。
  • HWPF - 提供读写Microsoft Word格式档案的功能。
  • HSLF - 提供读写Microsoft PowerPoint格式档案的功能。
  • HDGF - 提供读写Microsoft Visio格式档案的功能。

这里提供一个工具类用于生成Excel

  • ViewExcel.java –用于创建生成Excel
package com.xpseed.util;import java.io.OutputStream;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;import javax.mail.internet.MimeUtility;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.apache.commons.lang.StringUtils;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.springframework.web.servlet.view.document.AbstractExcelView;import com.xpseed.constant.Constants;/*** poi excel(SpringMvc下载工具类)* @author LJH**/
public class ViewExcel extends AbstractExcelView {public static class CellInfo {public int row;//行public int col;//列public int rowSpan;//行距public int colSpan;//列距public Object value;public String toCellString() {if (value == null)return "";return value.toString();}}public static class SheetInfo {//工作标签--包含多个cell(单元格)public String title;public int maxRow = 0;public int maxCol = 0;public List<CellInfo> cells = new ArrayList<ViewExcel.CellInfo>();/***用于创建一个Cell**/public CellInfo createCell(int row, int col, Object value, int rowSpan,int colSpan) {return init(row, col, value, rowSpan, colSpan);}private CellInfo init(int row, int col, Object value, int rowSpan,int colSpan) {CellInfo ret = new CellInfo();cells.add(ret);ret.row = row;ret.col = col;ret.value = value;ret.rowSpan = rowSpan;ret.colSpan = colSpan;if (ret.row > maxRow)maxRow = ret.row;if (ret.col > maxCol)maxCol = ret.col;return ret;}public CellInfo createCell(int row, int col, Object value) {return init(row, col, value, 1, 1);}}public static class ExcelInfo {//ExcelInfo() {}public String title;public List<SheetInfo> sheets = new ArrayList<ViewExcel.SheetInfo>();public SheetInfo createSheetInfo(String title) {SheetInfo ret = new SheetInfo();sheets.add(ret);ret.title = title;return ret;}}public static ExcelInfo createExcel(String title) {Excel文档包含多个标签ExcelInfo ret = new ExcelInfo();ret.title = title;return ret;}@SuppressWarnings("deprecation")@Overrideprotected void buildExcelDocument(Map<String, Object> modelMap,HSSFWorkbook workbook, HttpServletRequest request,HttpServletResponse response) throws Exception {SimpleDateFormat format = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");String filename = format.format(new Date()) + ".xls";ExcelInfo excelInfo = (ExcelInfo) modelMap.get(Constants.ExcelConstant.EXCEL_INFO);String excelName = (String) modelMap.get(Constants.ExcelConstant.EXCEL_NAME);if (excelName != null && !excelName.equals("")) {filename = excelName + ".xls";}for (SheetInfo sheetInfo : excelInfo.sheets) {HSSFSheet sheet = workbook.createSheet(sheetInfo.title);sheet.setDefaultColumnWidth((short) 12);for (CellInfo cell : sheetInfo.cells) {getCell(sheet, cell.row, cell.col).setCellValue(cell.toCellString());}}filename = encodeFilename(filename, request);// 处理中文文件名response.setContentType("application/vnd.ms-excel");response.setHeader("Content-disposition", "attachment;filename="+ filename);OutputStream ouputStream = response.getOutputStream();workbook.write(ouputStream);ouputStream.flush();ouputStream.close();}/*** 处理中文文件名* * @param filename  = "测试.xls";// 设置下载时客户端Excel的名称* @param request* @return*/private String encodeFilename(String filename, HttpServletRequest request) {/*** 获取客户端浏览器和操作系统信息 在IE浏览器中得到的是:User-Agent=Mozilla/4.0 (compatible; MSIE* 6.0; Windows NT 5.1; SV1; Maxthon; Alexa Toolbar)* 在Firefox中得到的是:User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1;* zh-CN; rv:1.7.10) Gecko/20050717 Firefox/1.0.6*/String agent = request.getHeader("USER-AGENT");try {if ((agent != null) && (-1 != agent.indexOf("MSIE"))) {String newFileName = URLEncoder.encode(filename, "UTF-8");newFileName = StringUtils.replace(newFileName, "+", "%20");if (newFileName.length() > 150) {newFileName = new String(filename.getBytes("GB2312"),"ISO8859-1");newFileName = StringUtils.replace(newFileName, " ", "%20");}return newFileName;}if ((agent != null) && (-1 != agent.indexOf("Mozilla")))return MimeUtility.encodeText(filename, "UTF-8", "B");return filename;} catch (Exception ex) {return filename;}}
}
  • 工具类的使用
    这里的包含关系
    Excel中包含一个或多个Sheet(工作标签),Sheet包含一个或多个cell(单元格)
  • 第一步:新建 一个Excel
ViewExcel viewExcel = null;
String excelName = "Excel的名字"
viewExcel = new ViewExcel();
ViewExcel.ExcelInfo excelInfo = ViewExcel.createExcel(excelName);//创建excel文件
  • 第二步建立一个或多个工作标签模板
  String niceName ="Sheet名字"//这里注意使用上面的工具类这里如果用StringBuffer来拼接名字需用  String str = new String(buffer); 转为String,使用buffer.toString会保错ViewExcel.SheetInfo sheetInfo = excelInfo.createSheetInfo(nicName);sheetInfo.createCell(0, 0, "时间");//这里对于参数:行,列,单元格名字sheetInfo.createCell(0, 1, "班级");sheetInfo.createCell(0, 2, "姓名");
  • 第三步写得单元格
int row = 1;
for(MachineNicTraffic entity : items){sheetInfo.createCell(row, 0,DateUtil.toDateTimeString(entity.getStatTime()));sheetInfo.createCell(row, 1, TrafficUtil.toMorM(entity.getTx()));sheetInfo.createCell(row, 2, TrafficUtil.toMorM(entity.getRx()));++row;
}

这里就已经完成Excel的创建了
- 第四步导出Excel

modelMap.put("excelName", excelName);
modelMap.put("excelInfo", excelInfo);
return new ModelAndView(viewExcel, modelMap);
  • 前端js直接调用这个Controller就可以导出
location.href="Controller地址"

这里完整代码是公司的代码所以就不发了

欢迎留言,评论,有留必回。。一起讨论一起成长谢谢

利用POI工具类实现导出Excel的功能相关推荐

  1. java工具类之导出Excel

    在我们的项目中经常会用到导出excel,这里就列举一下大家最常用到的导出EXCEL技术,在说一下自己设计的工具类.对POI不感兴趣的人,可以直接跳到最下面的工具类; 什么是Apache POI? Ap ...

  2. 利用poi实现table表格导出excel

    思路:把table转成json数据传到后台(需要用到jquery.tabletojson.min.js),json转成list<list<String>>类型.利用poi导出e ...

  3. Hutool工具类ExcelWriter导出excel列宽自适应问题解决

    前言: 因为项目中需要使用到ExcelWriter导出excel的列宽自适应,下面为解决该问题的经过,希望可以对遇到同样问题的开发者有所帮助. 一.通过查询Hutool官方的api文档发现autoSi ...

  4. 利用hutool工具类导出Excel

    简单介绍 可以使用hutool工具类,简单的生成Excel.本质上还是使用的POI组件,只是对其进行了封装,避免开发人员重复造轮子 hutool工具类链接 maven导入 <!-- hutool ...

  5. hutool导出excel大数据_HuTool工具类使用之Excel文档的导入导出

    HuTool工具类使用之Excel文档的导入导出 前言 在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel ...

  6. hutool 自定义excel_HuTool工具类使用之Excel文档的导入导出

    HuTool工具类使用之Excel文档的导入导出 前言 在日常的工作开发中,Excel的导入和导出是必不可少的,如果自己写相应的导入导出方法,会显得十分繁琐,本文采用Hutool工具类实现的Excel ...

  7. 「Java工具类」pdf导出工具类java导出pdf文件工具类

    介绍语 本号主要是Java常用关键技术点,通用工具类的分享:以及springboot+springcloud+Mybatisplus+druid+mysql+redis+swagger+maven+d ...

  8. 根据自定义类属性导出Excel

    根据自定义类属性导出Excel 之前的工作中遇到了导出Excel的功能需求,为了方便之后的工作使用,整理成一个Util Jar包下载 https://download.csdn.net/downloa ...

  9. 使用 poi 通过浏览器方式导出Excel表格(导出字段与表格字段不一样且取值逻辑改变)

    使用 poi 通过浏览器方式导出Excel表格(导出字段与表格字段不一样且取值逻辑改变) 思路:拿到表格页面查询的结果作为查询条件,表格页面的url和点击导出按钮的url是一样的,按钮的url多一个参 ...

最新文章

  1. jQuery框架学习第八天:ASP.NET jQuery实施方案
  2. 收集的一些好的网址[持续更新]
  3. 鸟哥Linux服务器-8
  4. Mysql 索引问题-日期索引使用
  5. eclipse插件:OpenExplorer快速打开文件目录
  6. html顶栏符号不显示,html – 带有USE标记的SVG无法呈现
  7. 测试人员入门级的数据库知识(SQL语句)
  8. 项目管理十大知识领域之项目风险管理
  9. 1952-2018年中国各省份人均GDP(消涨处理)
  10. sql 遇到多个重复列名报错:Ambiguous column reference ***
  11. 实例学习Ansible系列:颜色与设定
  12. 第三方App接入微信登录 解读
  13. 线性代数方程组数值解法
  14. 高分辨率目标检测——(转载)【python】小目标检测中对一幅高分辨率图分块且改变目标bounding box的坐标
  15. 解决RHEL7无法使用YUM源的问题
  16. win11恢复win10右键菜单栏
  17. 驱动氛围灯(底灯)配置
  18. CCNA培训课总结笔记--RIPv1负载均衡(六)
  19. 【行业调研报告】-解读游戏交易平台
  20. 浏览器搜索框获取焦点快捷键 (edge)

热门文章

  1. Promise相关学习
  2. [Error]Invalid bundle structure. The “CMTest.app/CMSDK.framework/CMSDK” binary file is not permitted
  3. linux下parted分区,linux下parted分区
  4. PWmat助你提高2022基金命中率
  5. 美国俚语:Dark meat?什么意思
  6. 硬盘损坏及Ubuntu18.04双系统重装记录(实操不踩坑安装)
  7. 总结Spring框架用到的11种设计模式
  8. php 页面关了还在执行,php关闭页面仍执行的实现方法
  9. vue定时器问题(单个定时器和循环定时器)
  10. 腾讯qq2014官方正式版 v5.3.10723 免费版