如果能给你带来帮助,不胜荣幸,如果有错误也请批评指正。

  1:maven 依赖,现在好多都是用的poi 3.6 和 poi3.9 的jar,项目升级了,现在得用5.x的了,所以就用5.x的给大家简单的演示,尽可能找依赖相同的,因为不同版本里面的方法什么的会有变化

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>5.2.0</version>
</dependency>

  2:后台(网上后台太多了,全是写后台bug的,我就不多说了,我就用最怂的一种给大家展示,仅做展示)

    ①网上随便扒一个工具类,大家可以看一下里面的注释,个别地方说了一下废话

import org.apache.poi.hssf.usermodel.*;

/**
* excel导出工具
*
* @author Tomas·Red
* @since
*/ public class ExcelExportUtil { /**
* 导出Excel
* @param sheetName sheet名称
* @param title 标题
* @param values 内容
* @param wb HSSFWorkbook对象
* @return
*/
public static HSSFWorkbook getHSSFWorkbook(String sheetName, String []title, String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
     // 你创建 HSSFWorkbook 就是代表创建 .xls(2003)最大导出行数为:65536;创建XSSFWorkbook 代表创建.xlsx(2007)最大行数为:1048576 至于用什么自己定义
        if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
//style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 样式我给隐藏了,因为5.2的poi,不支持这样写了,我没去查,后期查了之后再修改吧
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=0;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=0;i<values.length;i++){
row = sheet.createRow(i + 1);
for(int j=0;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
}

  ②业务层或者控制层代码

@RequestMapping("/handExprot")
public Object handExprot(HttpServletResponse response, WellEquipmentParam wellEquipmentParam){
// 导出的数据
List<Well> list = (List<Well>) mainBusiness.findAll();
//excel标头
String[] title = {"title1", "title2", "title3", "title4", "title5", "title6", "title7", "title8"}; //excel文件名
String fileName = "活动报名信息表" + System.currentTimeMillis() + ".xls";
//sheet名
String sheetName = "活动报名信息表";
int size = list.size();
String [][] content = new String[size][8];
     // 循环给单元格赋值
for (int i = 0; i < list.size(); i++) {
content[i] = new String[title.length];
Well well = list.get(i);
content[i][0] = well.getId() + "";
content[i][1] = well.getWellName() + "";
content[i][2] = well.getWellCode() + "";
content[i][3] = well.getWellType() + "";
content[i][4] = well.getLatitude() + "";
content[i][5] = well.getLongitude() + "";
content[i][6] = well.getWellDepth() + "";
content[i][7] = well.getWellAddress() + "";
} //创建HSSFWorkbook
HSSFWorkbook wb = ExcelExportUtil.getHSSFWorkbook(sheetName, title, content, null); //响应到客户端
try {
this.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
//发送响应流方法
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}

  到这里后台的方法已经全部写完了。剩下的就是前台了,网上搜的很多都是没有前台的,没有前台你写个der啊,老衲就是前台不会,后来自己东拼西凑了一个前台,大家凑合着看吧

 

export function handExprot(data) {
let consturl=process.env.SERVER_API + "/WellController/handExprot" + "?" + qs.stringify(data, { indices: false });
var xhr = new XMLHttpRequest();
console.log({consturl})
xhr.open("get", consturl, true); // get、post都可
xhr.responseType = "blob"; // 转换流
xhr.setRequestHeader("token",window.localStorage.getItem("token")); //加请求头
xhr.onload = function() {
// debugger
if (this.status == 200) {
var blob = this.response;
var a = document.createElement("a")
var url = window.URL.createObjectURL(blob)
a.href = url
a.download = "导出文件.xls" //
}
a.click()
window.URL.revokeObjectURL(url)
}
xhr.send();
}

到这里就完了,后台有很多大家可以取随便抄,但是前台不能单纯的ajax去请求。要注意属性

  

poi 5.2 导出的更多相关文章

  1. Java中使用poi导入、导出Excel

    一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...

  2. Java使用POI实现数据导出excel报表

    Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...

  3. java使用poi将html导出word,默认打开页面视图

    <html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:o ...

  4. POI导入和导出Excel总结

    POI导入和导出Excel总结   POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本 ...

  5. apache poi根据模板导出excel

    需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...

  6. 转:POI操作Excel导出

    package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...

  7. 使用POI实现数据导出Excel表格

    package cn.sh.bzt.kwj.action; import java.io.IOException; import java.io.OutputStream; import java.t ...

  8. Java POI 两种导出方式

    这里面包含了模板导出方法和自定义模板进行导出 package jp.co.syspro.poo.action.hibikoyou; import java.io.ByteArrayOutputStre ...

  9. 一个poi操作实现导出功能的类

    public class ExportExcel<T> { public void exportExcel(Collection<T> dataset, OutputStrea ...

  10. POI通过模板导出EXCEL文件

    一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...

随机推荐

  1. Earthdata批量下载MODIS遥感影像的方法

      本文介绍在Earthdata网站中,批量下载MODIS遥感影像的方法.   首先,打开网页:https://search.earthdata.nasa.gov/search ,如果没有Earthd ...

  2. 推荐一款在浏览器编辑`Blazor`的`IDE`

    不知道是否有Blazor用户羡慕过React或者Vue用户,在一些组件库中,它们就提供了在当前的组件预览对于组件的实时编辑并且预览? 比如semi-design的这种 在比如codepen这种 由于B ...

  3. Flutter框架渲染流程与使用

    Flutter简述 Flutter是一个UI SDK, 可以进行移动端(iOS, Android),Web端, 桌面,它是一个跨平台解决方法. Flutter的特点:美观,快速,高效,开放. 美观:F ...

  4. 模板层语法、模板层之标签、模板的继承与导入、模型层之ORM常见关键字

    模板层语法.模板层之标签.模板的继承与导入.模型层之ORM常见关键字 一.模板层语法 1.模板语法的传值 urls代码: path('modal/', views.modal) views代码: de ...

  5. Django框架之drf:5、反序列化器校验部分源码分析、断言、drf之请求与响应、视图组件介绍及两个视图基类、代码部分实战

    Django框架之drf 目录 Django框架之drf 一.反序列化类校验部分源码解析 二.断言 三.drf之请求 1.Request能够解析的前端传入编码格式 2.Request类中的属性和方法 ...

  6. 力扣---45. 跳跃游戏 II

    给定一个长度为 n 的 0 索引整数数组 nums.初始位置为 nums[0].每个元素 nums[i] 表示从索引 i 向前跳转的最大长度.换句话说,如果你在 nums[i] 处,你可以跳转到任意 ...

  7. 关于AD获取成员隶属于哪些组InvokeGet("memberOf")的问题

    关于AD获取成员隶属于组成员问题 获取结果默认返回object类型,可能是string类型,也可能是object[]类型,所以只有一个结果的时候是string类型,直接返回object[]会报错 pr ...

  8. Nacos入门

    1.介绍 ①概要 官网:home (nacos.io) Nacos:Dynamic Naming and Configuration Service(动态命名和配置服务) 你可以看为:Eureka(注 ...

  9. ROS入门:小海龟实验

    1.初试小海龟 1.roscore 2.rosrun turtlesim turtlesim_node 3.rosrun turtlesim turtle_teleop_key 2.发布话题控制小海龟 ...

  10. eigen的简单用法汇总

    Eigen帮助文档的地址:http://eigen.tuxfamily.org/dox/pages.html Eigen的论坛:http://forum.kde.org/viewforum.php?f ...