poi 5.2 导出
如果能给你带来帮助,不胜荣幸,如果有错误也请批评指正。
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 导出的更多相关文章
- Java中使用poi导入、导出Excel
一.介绍 当前B/S模式已成为应用开发的主流,而在企业办公系统中,常常有客户这样子要求:你要把我们的报表直接用Excel打开(电信系统.银行系统).或者是:我们已经习惯用Excel打印.这样在我们实际 ...
- Java使用POI实现数据导出excel报表
Java使用POI实现数据导出excel报表 在上篇文章中,我们简单介绍了java读取word,excel和pdf文档内容 ,但在实际开发中,我们用到最多的是把数据库中数据导出excel报表形式.不仅 ...
- java使用poi将html导出word,默认打开页面视图
<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:o ...
- POI导入和导出Excel总结
POI导入和导出Excel总结 POI使用总结 1.POI读取Excel 打开工作簿的方式有以下两种简单的应用,POI读取和输出工作簿文件都可以通过以下两种方式来声明: //通过输入流的方式打开本 ...
- apache poi根据模板导出excel
需要预先新建编辑好一个excel文件,设置好样式. 编辑好输出的数据,根据excel坐标一一对应. 支持列表数据输出,列表中列合并. 代码如下: package com.icourt.util; im ...
- 转:POI操作Excel导出
package com.rd.lh.util.excel; import java.beans.PropertyDescriptor; import java.io.FileOutputStream; ...
- 使用POI实现数据导出Excel表格
package cn.sh.bzt.kwj.action; import java.io.IOException; import java.io.OutputStream; import java.t ...
- Java POI 两种导出方式
这里面包含了模板导出方法和自定义模板进行导出 package jp.co.syspro.poo.action.hibikoyou; import java.io.ByteArrayOutputStre ...
- 一个poi操作实现导出功能的类
public class ExportExcel<T> { public void exportExcel(Collection<T> dataset, OutputStrea ...
- POI通过模板导出EXCEL文件
一般的EXCEL导出使用POI先创建一个HSSFWorkbook,然后通过不断创建HSSFRow,HSSFCell后设置单元格内容便可以完成导出. 这次在项目中需要用到模板,导出的内容包括(1.模板中 ...
随机推荐
- [数据结构]广度优先搜索算法(Breadth-First-Search,BFS)
广度优先搜索的概念 广度优先搜索(BFS)类似于二叉树的层序遍历算法,它的基本思想是:首先访问起始顶点v,然后由v出发,依次访问v的各个未被访问过的邻接顶点w1,w2,w3-.wn,然后再依次访问w1 ...
- linux 基础之输入输出重定向
输入输出重定向 输出重定向 正确命令 > 文件 (覆盖) 正确命令 >> 文件(追加) 错误命令 2> 文件(覆盖) 错误命令 2>>文件(追加) 命令> 文 ...
- 在Typescript项目中,使用ESLint和Prettier,以及解决保存代码后ESLint配置冲突问题
首先,检查项目中根目录.eslintrc.js文件,该文件中定义了ESLint的基础配置,找到其中的rules 例如: const prettierConfig = require('./.prett ...
- 流程概述与顺序结构-选择结构_单if语句
流程概述与顺序结构 概述 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果 有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要 ...
- 数学工具类Math-练习
数学工具类Math 概述 java.lang.Math 类包含用于执行基本数学运算的方法,如初等指数.对数.平方根和三角函数.类似这样的工具 类,其所有方法均为静态方法,并且不会创建对象,调用起来非常 ...
- java基础(六):面向对象
面向对象 面向对象:以类的方式组织代码,以对象组织数据 特性: 封装 继承 多态 类:抽象概念 对象:具体事物 面向对象是java学习的重中之重,毕竟java就是一个面向对象的语言~ 类 = 属性+方 ...
- html 引入 js 代码的几种方式
一.普通加载 <script src="./abc.js"></script> 二.内嵌 <script> JavaScript 代码 < ...
- Mybatis Plus (特性、快速入门、日志、CRUD)
Mybatis plus 可以节省很多的工作,所有的CRUD JPA yk-mapper Mybatis plus 偷懒的 简介: MyBatis-Plus(opens new window)(简称 ...
- 【TS】数组和元组
数组 在ts中,定义数组类型语法: let 变量名 : 数据类型[] = [值1,值2,值3] let arr1 : number[] = [1,2,3,4] console.log(arr1); / ...
- 郁金香 中级班 1.c++的类和对象
#include<stdio.h> class 生物 { public: 生物() { printf("我是构造函数\n"); } int id1; int id2; ...