java jxl poi_「excle下载」java实现下载excle(jxl、poi 两种方式) - seo实验室
excle下载
@requestMAPPing(value="/download_index")
public String downloadexcel(HttpServletRequest request,HttpServletresponse response,String name) {
WritableWorkbook wbook = null;
try {
String flieName = name;
// 取得输出流
os = response.getOutputStream();
response.reset();// 清空输出流
// 设定输出文件头
response.setheader("content-Disposition", "attachment; filename=" + new String(flieName.getBytes("UTF-8"), "ISO8859-1") + ".xls");
// 定义输出类型
response.setcontenttype("application/msexcel;charset=utf-8");
// 建立excel文件
wbook = Workbook.createWorkbook(os);
//要下载的list数据
List unifiedVOList = new ArrayList();
// 设置数据
setWorkBookData(unifiedVOList, wbook,flieName);
if (wbook.getNumberOfSheets() > 0) {
wbook.write();
}
wbook.close();
os.close();
} catch (Exception e) {
e.printstacktrace();
}finally {
if(wbook != null) {
try {
wbook.close();
} catch (WriteException | IOException e) {
e.printStackTrace();
}
}
if(os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
String [] codes 是页面传过来的要查询的内容,name 是传过来动态表名。for循环查出List数据,然后统一用unifiedVOList.addAll()合在一起。然后将list数据集合传入方法内、work、表名传入方法内。private void setWorkBookData(List giftRecords, WritableWorkbook wbook,String name)
throws WriteException, RowsExceededException {
final integer EXCEL_MAX_NUMBER = 65535;
WritableCellformat wc = new WritableCellFormat();
// 设置居中
wc.setAlignment(Alignment.CENTRE);
simpledateformat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
WritableSheet wsheet = null;
int sheetNumber = 0;
if (giftRecords.size() % EXCEL_MAX_NUMBER != 0) {
sheetNumber = giftRecords.size() / EXCEL_MAX_NUMBER + 1;
} else {
sheetNumber = giftRecords.size() / EXCEL_MAX_NUMBER;
}
for (int j = 0; j < sheetNumber; j++) {
wsheet = wbook.createSheet(name + (j + 1), j); // sheet名称
// 开始生成主体内容
wsheet.addCell(new Label(0, 0, "名称", wc));
wsheet.setColumnView(0, 32);
wsheet.addCell(new Label(1, 0, "时间", wc));
wsheet.setColumnView(1, 20);
wsheet.addCell(new Label(2, 0, "数据", wc));
wsheet.setColumnView(2, 32);
wsheet.addCell(new Label(3, 0, "单位", wc));
wsheet.setColumnView(3, 30);
int start = EXCEL_MAX_NUMBER * j;
int end = EXCEL_MAX_NUMBER + start;
for (int i = start, k = giftRecords.size(); i < k && i < end; i++) {
UnifiedVO unifiedVO = giftRecords.get(i);
int row = i - start + 1;
wsheet.addCell(new Label(0, row, unifiedVO .getKey(), wc));
wsheet.addCell(new Label(1, row, unifiedVO .getDate(), wc));
wsheet.addCell(new Label(2, row, unifiedVO .getData(), wc));
wsheet.addCell(new Label(3, row, unifiedVO .getUnit(), wc));
}
}
}
wsheet.addCell(new Label(0, 0, "名称", wc))
wsheet.addCell(new Label(1, 0, "时间", wc));
wsheet.addCell(new Label(2, 0, "数据", wc));
wsheet.addCell(new Label(3, 0, "单位", wc));
上面的字段一一对应VO字段
wsheet.addCell(new Label(0, row, unifiedVO .getKey(), wc));
wsheet.addCell(new Label(1, row, unifiedVO .getDate(), wc));
wsheet.addCell(new Label(2, row, unifiedVO .getData(), wc));
wsheet.addCell(new Label(3, row, unifiedVO .getUnit(), wc));
对应的maven API :
net.sourceforge.jexcelapi
jxl
2.6.12
=====================================================================================
poi 导出:
org.apache.poi
poi
3.17
最简单的下载数据实现:public test(HttpServletRequest request,HttpServletResponse response) {
List> arrayList = new ArrayList();
OutputStream os = null;
// 取得输出流
try {
os = response.getOutputStream();
} catch (IOException e2) {
e2.printStackTrace();
}
response.reset();// 清空输出流
//1.在内存中创建一个excel文件
HSSFWorkbook hssfWorkbook = new HSSFWorkbook();
//2.创建工作簿
HSSFSheet sheet = hssfWorkbook.createSheet();
//3.创建标题行
HSSFRow titlerRow = sheet.createRow(0);
HSSFCellStyle createCellStyle = hssfWorkbook.createCellStyle();//创建单元格样式
createCellStyle.setFillForegroundcolor((short) 255);// 设置背景色
createCellStyle.setAlignment(HorizontalAlignment.CENTER_SELECTION); // 居中
createCellStyle.setBorderTop(BorderStyle.SLANTED_DASH_DOT);
titlerRow.createCell(0).setCellValue("营销顾问");
titlerRow.setRowStyle(createCellStyle);
for (Object o : arrayList) {
//获取最后一行的行号
int lastrownum = sheet.getLastRowNum();
HSSFRow dataRow = sheet.createRow(lastRowNum + 1);
dataRow.createCell(0).setCellValue(o.get营销顾问());
}
//5.创建文件名
String fileName = "区域数据统计.xls";
//9.设置信息头
response.setContentType(fileName);
try {
fileName = new String (fileName.getBytes ("utf-8"),"ISO8859-1");
} catch (UnsupportedEncodingException e2) {
e2.printStackTrace();
}
response.setHeader("Content-Disposition","attachment;filename="+fileName);
//10.写出文件,关闭流
try {
hssfWorkbook.write(os);
} catch (IOException e1) {
}
try {
hssfWorkbook.close();
} catch (IOException e) {
e.printStackTrace();
}
}
相关阅读
Java SE Development Kit 6u41
Product / File Description
File Size
Download
password
Linux x86
65.43 MB
jdk-6u41-
注:(fpSpread1为farpoint名,fpSpread1_Sheet1为表名)
用farpoint的时,设置视区随滚动条移动(鼠标按着,farpoint的内容更新到滚动条的区域
1:简单的截屏——截全屏
package com.auto.Test;
import java.awt.Dimension;
import java.awt.Rectangle;
关于java集合类Collections.在前端开发中可能用到的比较少,不过java后台用到的应该挺多,比较后台主要是基于数据库的读写的,对于并发
在多线程的场景中,我们需要保证数据安全,就会考虑同步的方案,通常会使用synchronized或者lock来处理,使用了synchronized意味着内核
java jxl poi_「excle下载」java实现下载excle(jxl、poi 两种方式) - seo实验室相关推荐
- ubuntu 安装java jdk_「ubuntu安装jdk」Ubuntu安装jdk8的两种方式 - seo实验室
ubuntu安装jdk 安装方式: 1):通过ppa(源) 方式安装. 2):通过官网安装包安装.JDK官网下载地址 一:使用ppa(源)方式安装: 1):添加ppa源sudo add-apt-rep ...
- java kafka设置偏移量_kafka实战宝典:手动修改消费偏移量的两种方式
kafka实战宝典:手动修改消费偏移量的两种方式 工作中遇到过消费端报错的问题:包括数据Invalid Message和Failed_to_UNcompress等报错信息,导致消费端的iterator ...
- pdf.js —— 在线预览下载打印pdf文件插件,实现的两种方式
ViewerJS简介 ViewerJS的繁重工作是由这些令人敬畏的项目完成的: PDF.js(由Mozilla提供) WebODF(由KO GmbH提供) 运行ViewerJS就像创建链接一样简单.您 ...
- arraylist java 排序_「arraylist排序」java ArrayList的两种排序方法 - seo实验室
arraylist排序 1.ArrayList使用排序的初衷 我们知道ArrayList的好处是可以不用限定容器的大小,他会根据元素的增加自己扩大.但是存储进去的数据类型都会变成object,虽然每个 ...
- python 分词工具_「分词工具」干货 | 史上最全中文分词工具整理 - seo实验室
分词工具 作者 | fendouai 分词服务接口列表 二.准确率评测: THULAC:与代表性分词软件的性能对比 我们选择LTP-3.2.0 .ICTCLAS(2015版) .jieba(C++版) ...
- 华硕笔记本k555拆机图解_「华硕k401n」华硕K401笔记本电脑拆机清灰步骤详解 - seo实验室...
华硕k401n 笔记本电脑长时间使用后存在大量灰尘,造成风扇噪音大,cpu温度高,影响计算机工作性能,威胁硬件安全.因此需要及时清灰.下面为大家分享华硕K401笔记本电脑拆机清灰步骤,有需要的朋友快快 ...
- android dts配置_「7.1」[RK3399][Android7.1] 移植笔记 --- 音频Codec RT5640添加 - seo实验室...
7.1 Platform: RK3399 Kernel: v4.4.83 原理图: 数据走I2S1通道 控制走I2C1通道 输出走HPOUTL/HPOUTR 改动: DTS配置: //Kris,180 ...
- jq select 修改选中_「jquery select」jquery操作select(取值,设置选中) - seo实验室
jquery select 最近工作中总出现select 和 option问题,整理一下,内容大部分源于网络资料 一.基础取值问题 例如 1.设置value为pxx的项选中 $(".sele ...
- mysql insert 嵌套_「insert语句」数据库插入insert语句中添加嵌套查询select - seo实验室...
insert语句 示例: insert into mytable(X,Y,Z) Values((SELECT X from basetable WHERE ID = 8),(SELECT Y from ...
最新文章
- OpenCV(十四)图像阈值
- 复习下mybatis 中 useGeneratedKeys 和 keyProperty 含义
- 用机器学习分析美国新财年1万个国防项目,7054亿军费都投给了哪些技术?
- spring21:Aspectj实现后置通知@AfterReturning
- JAVA 基本运算符(摘)
- Python 学习笔记(半ZZ半自己写)
- 【CV】使用计算机视觉算法检测钢板中的焊接缺陷
- 第三次学JAVA再学不好就吃翔(part12)--基础语法之for循环语句
- HFSS中的求解类型(Solution Type)
- Java反射基础(二)--Fileds对象的使用
- 彻底解决 Jenkins Slaver 节点无法执行 Git-LFS 命令
- Python基础笔记(二) List、tuple、循环语句
- 利用mitmproxy进行抓包
- 自定义表单提交后返回上一页修改
- 计算机中取消上一步操作的是,电脑怎么撤销上一步操作
- uni-app引入极光im
- windows11下安装vivado2019
- prayaya v3-国产神操作系统
- 2015062801 - 祈福八仙水上乐园
- win10 系统版本号获取的三种方法
热门文章
- c++使用单向链表存储一组有序数据_《一起学习java和数据结构》系列-数组和链表...
- php开发大型网站如何优化,PHP编写大型网站问题
- 建立一个lstm_基于LSTM的双色球预测(一)
- OpenShift 之 Quarkus(1)创建第一个Quarkus应用
- 使用XLocalizer进行ASP.NET Core本地化
- Visual Studio中的第一个Django-Python应用程序
- GitHub:我们为什么会弃用jQuery?
- %3c php $str1=,ThinkPHP5.0.215.1.* 代码执行和命令执行漏洞利用
- 白月黑羽教python_白月黑羽Python在线教程
- js 正则表达式判断价格