POI导出数据以Excel的方式录入,下载
简单描述:把数据导出到excel文件中。过程:获取要导出的数据列表(list),创建excel文件,数据放入。
代码:
//html代码
<div class="btn-group">
<button class="btn sbold green" id="export" onclick="">
<span class="ladda-label">导出数据</span>
</button>
</div>
//js代码
<script type="text/javascript">
//后台查询到的list传过来的
//通过modelmap的addAttribute()方法来传递
//具体的省略
var examList = [[examList]]; $("#export").click("click",function () {
//list转json
var obj=JSON.stringify(examList);
window.location.href = rootPath + "/vraxx/rightAxx/fileExport?rightsJson="+encodeURIComponent(obj);
})
//后台java代码
@RequestMapping("fileExport")
@ResponseBody
public void exportFile(String rightsJson,HttpServletResponse response) throws IOException{
try {
List<VraxxTemporary> list=(List<VraxxTemporary>)JSONArray.toList(JSONArray.fromObject(rightsJson), VraxxTemporary.class);
if(list.size()==0){
response.sendRedirect("errornull.action");
}else{
// 在内存中创建一个Excel文件,通过输出流写到客户端提供下载
// 内存中保留 10000 条数据,以免内存溢出,其余写入 硬盘
SXSSFWorkbook workbook = new SXSSFWorkbook(10000);
// 创建一个sheet页
SXSSFSheet sheet = (SXSSFSheet) workbook.createSheet("XX模板");
// 分别设置Excel列的宽度
sheet.setColumnWidth(0, 150 * 40);
sheet.setColumnWidth(1, 100 * 40);
sheet.setColumnWidth(2, 100 * 40);
sheet.setColumnWidth(3, 100 * 40);
// 创建标题
SXSSFRow headRow = (SXSSFRow) sheet.createRow(0);
headRow.createCell(0).setCellValue("序号");
headRow.createCell(1).setCellValue("编码");
headRow.createCell(2).setCellValue("AA名称");
headRow.createCell(3).setCellValue("AA编码");
headRow.createCell(4).setCellValue("BB名称");
headRow.createCell(5).setCellValue("BB编码");
headRow.createCell(6).setCellValue("CC名称");
headRow.createCell(7).setCellValue("CC编码");
headRow.createCell(8).setCellValue("姓名");
headRow.createCell(9).setCellValue("手机号");
headRow.createCell(10).setCellValue("证件类型");
headRow.createCell(11).setCellValue("证件号"); for (VraxxTemporary temporary: list) {
// 创建行
SXSSFRow dataRow = (SXSSFRow) sheet.createRow(sheet.getLastRowNum() + 1);
dataRow.createCell(0).setCellValue(temporary.getTemp_id());
dataRow.createCell(1).setCellValue(temporary.getCont_number());
dataRow.createCell(2).setCellValue(temporary.getAA_name());
dataRow.createCell(3).setCellValue(temporary.getAA_code());
dataRow.createCell(4).setCellValue(temporary.getBB_name());
dataRow.createCell(5).setCellValue(temporary.getBB_code());
dataRow.createCell(6).setCellValue(temporary.getCC_name());
dataRow.createCell(7).setCellValue(temporary.getCC_code());
dataRow.createCell(8).setCellValue(temporary.getUserName());
dataRow.createCell(9).setCellValue(temporary.getUser_phone());
dataRow.createCell(10).setCellValue(temporary.getIdtype());
dataRow.createCell(11).setCellValue(temporary.getIdcode());
}
// 设置Excel文件名,并以中文进行编码
Date day=new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String name = "XX数据"+ df.format(day);
String codedFileName = new String(name.getBytes("gbk"), "iso-8859-1");
response.setHeader("Content-Disposition", "attachment;filename=" + codedFileName + ".xlsx");
// 响应类型,编码
response.setContentType("application/octet-stream;charset=UTF-8");
// 形成输出流
OutputStream osOut = response.getOutputStream();
// 将指定的字节写入此输出流
workbook.write(osOut);
// 刷新此输出流并强制将所有缓冲的输出字节被写出
osOut.flush();
// 关闭流
osOut.close();
/*
* dispose of temporary files backing this workbook on disk 处理在磁盘上备份此工作簿的临时文件
* SXSSF分配临时文件,您必须始终清除显式,通过调用dispose方法
*/
workbook.dispose();
}
} catch (Exception e) {
e.printStackTrace();
}
}
说明:encodeURIComponent()方法是对uri中的某一部分特殊字符进行编码,是浏览器能够接受和理解 (前台js传递的是json字符串)
网上找excel导出,很多都不太好用,可能是自己太菜,没调试好,也可能本身就有问题,在这里,这个是我网上扒来的然后经过修改之后的,记录一下。
POI导出数据以Excel的方式录入,下载的更多相关文章
- 数据库数据以Excel的方式导出
import java.io.Serializable; import java.util.List; import com.cfets.cwap.s.util.db.TableColumn; /** ...
- struts2中利用POI导出Excel文档并下载
1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...
- 简单Excel表格上传下载,POI
一.废话 Excel表格是office软件中的一员,几乎是使用次数最多的办公软件.所以在java进行企业级应用开发的时候经常会用到对应的上传下载便利办公. 目前,比较常用的实现Java导入.导出Exc ...
- excel上传和下载
需要注意的地方: 1.js构造表单并提交 2.js中文传参encodeURI(encodeURI("中文")),action接收并转换value = URLDecoder.deco ...
- ASP.Net MVC中数据库数据导出Excel,供HTTP下载(转)
转自http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于web ...
- ASP.Net MVC中数据库数据导出Excel,供HTTP下载
本文来自:http://www.cnblogs.com/hipo/archive/2012/03/13/2394019.html 一.关于下载 一般对下载权限有没有限制,或安全性要求不高的情况下,基于 ...
- JAVA-----基于POI实现对Excel导入
在日常项目开发中, 数据录入和导出是十分普遍的需求,因此,导入导出也成为了开发中一个经典的功能.数据导出的格式一般是excel或者pdf,而批量导入的信息一般是借助excel来减轻工作量,提高效率. ...
- 文件一键上传、汉字转拼音、excel文件上传下载功能模块的实现
----------------------------------------------------------------------------------------------[版权申明: ...
- java用org.apache.poi包操作excel
一.POI简介 Jakarta POI 是apache的子项目,目标是处理ole2对象.它提供了一组操纵Windows文档的Java API 目前比较成熟的是HSSF接口,处理MS Excel(97- ...
随机推荐
- webpack2.0 css文件引入错误解决及图片输出在根目录配置问题
webpack引入css文件,main.js内容如下 import Vue from 'vue'; import App from './App.vue'; import Mint from 'min ...
- 【题解】放球游戏B
题目描述 校园里在上活动课,Red和Blue两位小朋友在玩一种游戏,他俩在一排N个格子里,自左到右地轮流放小球,每个格子只能放一个小球.第一个人只能放1个球,之后的人最多可以放前一个人的两倍数目的球, ...
- C# 中ref与out关键字区别
ref 关键字通过引用传递的参数的内存地址,而不是值.简单点说就是在方法中对参数的任何改变都会改变调用方的基础参数中.代码举例: class RefExample { static void Meth ...
- python登录网页版微信发送消息
# coding=utf-8 import datetime import time from selenium import webdriver url = "https://wx2.qq ...
- Flask 模板系统
模板 基本数据类型 可以执行python语法,如:dict.get(), list['xx'] 比django 更加亲近于 python 传入函数 - django,自动执行 - flask,不自动执 ...
- java 11 标准Java异步HTTP客户端
这是 Java 9 开始引入的一个处理 HTTP 请求的的 HTTP Client API,该 API 支持同步和异步,而在 Java 11 中已经为正式可用状态,你可以在 java.net 包中找到 ...
- 关于FlexBox的布局
关于FlexBox的布局 基本要素 因为FlexBox是一整个模块并不是一个单独的属性,它涉及到很多东西包括它的所有设置属性.一些属性是需要被设置在容器(父级元素,称为『弹性容器』),而一些其他的属性 ...
- phpcms 标题设置
phpcms v9网站首页的标题可以控制,但是栏目页,内容页的标题非常的长,用户体验不好修改模板文件header html的<title> < title>改成 phpcms ...
- 收藏这些Safari快捷键,让你的Mac浏览网页更加方便
文章内容及图片来源于:知乎,如果涉及版权问题,请联系作者删除 文章收录于:风云社区(提供上千款各类mac软件的下载) Safari是Mac上的原生浏览器,功能自然很强大,现在每天在Mac上使用的最多的 ...
- Redis的Cluster配置
Redis的Cluster配置 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.安装Redis并启动 1>.修改Redis的配置文件(本实验只有三个节点) [root@no ...