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- ...
随机推荐
- JAVA获取计算机CPU、硬盘、主板、网络等信息
通过使用第三方开源jar包sigar.jar我们可以获得本地的信息 1.下载sigar.jar sigar官方主页 sigar-1.6.4.zip 2.按照主页上的说明解压包后将相应的文件copy到j ...
- 软工+C(10): 团队项目[NABCD] - 对话式编辑
上一篇:助教指南,持续更新... 下一篇:从命令行开始逐步培养编程能力(Java) 动机(Motivation) Eating your own dog food, also called dogfo ...
- nginx 编译参数详解(运维必看--转)
nginx参数: –prefix= 指向安装目录 –sbin-path 指向(执行)程序文件(nginx) –conf-path= 指向配置文件(nginx.conf) –error-log-path ...
- Oracle普通视图和物化视图的区别
介绍 物化视图是一种特殊的物理表,“物化”(Materialized)视图是相对普通视图而言的.普通视图是虚拟表,应用的局限性大,任何对视图的查询, Oracle 都实际上转换为视图SQL语句的查询. ...
- PHP artisan migrate 报错显示 could not find driver ,怎么办?
记录下自己的错误 一. 1.原因是没有pdo扩展导致的, 2.解决办法:打开php.ini,然后去掉以下两行代码之前的分号(:)即可.如下: extension=php_pdo_firebird.dl ...
- Hadoop Mapreduce分区、分组、二次排序
1.MapReduce中数据流动 (1)最简单的过程: map - reduce (2)定制了partitioner以将map的结果送往指定reducer的过程: map - partiti ...
- golang 数组、切片、map
一.数组(类似python的list) 数组的长度一旦定义了就不能动态增长.并且存储的数据类型必须相同. 创建方法: var 数组名 [长度]数据类型 例如: package main import ...
- Scanner和BufferReader的效率问题
先给出一道题,测试平台是Acwing, 这道题是腾讯2019年春招提前批笔试第二题.题目不难,但是如果不注意细节,很容易TLE(超时) https://www.acwing.com/problem/c ...
- Datatable get请求传参应用
以关注页面为例: html: <div class="row"> <div class="col-md-12 col-sm-12 col-xs-12&q ...
- Object Detection with 10 lines of code - Image AI
To perform object detection using ImageAI, all you need to do is Install Python on your computer sys ...