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

  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. dinic及当前弧优化

    网络流 dinic及当前弧优化 前言 dinic比较适合学习完km之后再学习.因为dinic感觉像是km的一种优化.总之难度不是特别大 dinic算法 好了,言归正传.先分析一下km为什么效率低下?因 ...

  2. NG-Alain + Angular11使用ModalHelper实现简单版本弹框,代码超级少,记得模块要引用这个组件

    先看一下目录结构 --aa-item ----modal-compment ------modal-compment.component.html ------modal-compment.compo ...

  3. 踩坑实录---Angular防抖——点击事件

    npx ng g directive DebounceClickDirective --module=app 然后自动生成了2 个文件 CREATE src/app/debounce-click-di ...

  4. MySQL中多种排名实现

      一.数据库表结构以及数据 CREATE TABLE `forlan_score` ( `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键ID', ...

  5. Unity之详解Texture

    [Texture]详解什么是Texture 前言 开篇废话 嗨咯大家好呀,时隔多日,小黑又和大家见面咯,最近懒癌犯了,而且技术上边倍受打击,所以回了家只想着睡觉休息,所以希望大家见谅见谅啦. Unit ...

  6. Vue 26 plugins

    1 简介 它是用来增强vue的.它是包含install方法的一个对象,install的第一个参数是Vue,第二个以后参数是插件使用者传入的参数 插件里面可以配置全局过滤器.全局指令.混入.Vue原型上 ...

  7. springcloud04 Ribbbon

    Ribbbon虽然现在已经进入维护模式了,但是使用的还是很多的. 1.官网 https://github.com/Netflix/ribbon/wiki/Getting-Started 2.Ribbo ...

  8. 主题样式选择效果代码及css样式

    先上效果图: 主要页面代码及样式: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> ...

  9. P20_事件绑定

    事件绑定 什么是事件 事件是渲染层到逻辑层的通讯方式.通过事件可以将用户在渲染层产生的行为,反馈到逻辑层进行业务的处理. 小程序中常用的事件 事件对象的属性列表 当事件回调触发的时候,会收到一个事件对 ...

  10. C#:开发一个winform窗体程序,实现强势股票池的数据获取。(需对接第三方接口,目前可免费使用)

    写在前面:短暂的接触过一段时间的股票市场,只能说A股真的太能杀了! 开发这个工具的初衷呢,是和几个好友在每日做"慈善"后,突发奇想:如果能实时获取当前股市里强势的股票就好了,因为这 ...