java实现poi导出到Excel(前端ajax/后台springboot)
链接: 读取本地Excel文件并追加图片/文字.
前言:
Bootstrap虽然有自带的导入excel插件。自身感觉限制较大,不太灵活,所以还是使用后端poi来实现,ajax请求只是个“字符型”的请求,请求的内容是以文本类型存放的。文件的下载是以二进制形式进行的,ajax没法解析后台返回的文件流,所以无法处理二进制流response输出来下载文件。所以自己使用ajax的时候遇到一些问题。解决后以下是具体实现
第一步引入maven依赖
<!-- excel导出工具 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.17</version>
</dependency>
<dependency>
<groupId>com.monitorjbl</groupId>
<artifactId>xlsx-streamer</artifactId>
<version>1.2.0</version>
</dependency>
第二步 前端代码实现
// An highlighted block
$(function () {
/* var medalName= $("#medalName").val()*/
var option = {
url: "", // 获取表格数据的url
cache: false, // 设置为 false 禁用 AJAX 数据缓存, 默认为true
striped: true, //表格显示条纹,默认为false
pagination: true, // 在表格底部显示分页组件,默认false
pageList: [5,10,15, 20], // 设置页面可以显示的数据条数
pageSize: 5, // 页面数据条数
pageNumber: 1, // 首页页码
sidePagination: 'client', // 设置为服务器端分页server//client
sortName: 'id', // 要排序的字段
sortOrder: 'asc', // 排序规则
clickToSelect: true,
queryParams:function(param){
return{
oNumber:$("#oNumber").val(),
defaddress:$("#defaddress").val(),
oTime:$("#startTime").val(),
fTime:$("#stopTime").val(),
oType:$("#oType").val(),
oDistribution:$("#oDistribution").val(),
/*oDistribution:$("#roleId").val()*/
}},
columns:[
{
checkbox: true, // 显示一个勾选框
align: 'center' // 居中显示
}, {
field: 'id', // 返回json数据中的name
title: '序号', // 表格表头显示文字
formatter:function (value,row,index) {
return index+1;
}
}, {
field: 'oNumber',
title: '订单号'
},{
field: 'defaddress',
title: '详细地址'
},{
field: 'uName'