java下载excel,excel从数据库获取数据
<!-- poi -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>3.14</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-scratchpad</artifactId>
<version>3.14</version>
</dependency>
controller.java
@RequestMapping("/exportFile")
public void exportFile(TbCdeShAgentRoadRateInBean form,HttpServletResponse response){
OutputStream os=null;
try {
Workbook wb=wbglService.exportFile(form);
ByteArrayOutputStream bos=new ByteArrayOutputStream();
wb.write(bos);
response.setBufferSize(512);
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
SimpleDateFormat dfs=new SimpleDateFormat("yyyy年mm月dd日HH时mm分ss秒");
//Date end=dfs.parse();
String fileName="委办公路"+dfs.format(new Date())+".xlsx";
response.addHeader("Content-disposition", "attachment; filename=" + new String(fileName.getBytes("UTF-8"), "ISO8859-1"));
response.addHeader("Content-Length", String.valueOf(bos.toByteArray().length));
os=response.getOutputStream();
IOUtils.write(bos.toByteArray(),os);
} catch (Exception e) {
e.printStackTrace();
}finally{
IOUtils.closeQuietly(os);
}
}
service.java
public Workbook exportFile(TbCdeShAgentRoadRateInBean form) throws Exception{
TbCdeShAgentRoadRateInBean param=getSearchParam(form);
int count=iwbglDao.getCount(param);
int pageSize=1000;
List<TbCdeShAgentRoadRateOutBean> list=null;
//防止一次查询的数据量过大,导出服务器内存崩了
int totalPage=(new Double(Math.ceil(count/(pageSize*1.0)))).intValue();
Workbook wb=new SXSSFWorkbook();
Sheet sheet=wb.createSheet("委办公路");
// 设置表格默认列宽度为15个字节
sheet.setDefaultColumnWidth((short) 15);
// 生成一个样式
CellStyle style =wb.createCellStyle(); //workbook.createCellStyle();
// 设置这些样式
Font font = wb.createFont();
font.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);
style.setFont(font);
//标题行
Row rowTitle=sheet.createRow(0);
Cell cell=rowTitle.createCell(0);
cell.setCellStyle(style);
cell.setCellValue("序号");
//rowTitle.createCell(1).setCellValue("邮路名称");
cell=rowTitle.createCell(1);
cell.setCellStyle(style);
cell.setCellValue("邮路名称");
//rowTitle.createCell(2).setCellValue("邮路代码");
cell=rowTitle.createCell(2);
cell.setCellStyle(style);
cell.setCellValue("邮路代码");
//rowTitle.createCell(3).setCellValue("开行方式");
cell=rowTitle.createCell(3);
cell.setCellStyle(style);
cell.setCellValue("开行方式");
//rowTitle.createCell(4).setCellValue("代理商");
cell=rowTitle.createCell(4);
cell.setCellStyle(style);
cell.setCellValue("代理商");
//rowTitle.createCell(5).setCellValue("5T(元/车)");
cell=rowTitle.createCell(5);
cell.setCellStyle(style);
cell.setCellValue("5T(元/车)");
//rowTitle.createCell(6).setCellValue("8T(元/车)");
cell=rowTitle.createCell(6);
cell.setCellStyle(style);
cell.setCellValue("8T(元/车)");
//rowTitle.createCell(7).setCellValue("15T(元/车)");
cell=rowTitle.createCell(7);
cell.setCellStyle(style);
cell.setCellValue("15T(元/车)");
//rowTitle.createCell(8).setCellValue("25T(元/车)");
cell=rowTitle.createCell(8);
cell.setCellStyle(style);
cell.setCellValue("25T(元/车)");
//rowTitle.createCell(9).setCellValue("起始日期");
cell=rowTitle.createCell(9);
cell.setCellStyle(style);
cell.setCellValue("起始日期");
//rowTitle.createCell(10).setCellValue("结束日期");
cell=rowTitle.createCell(10);
cell.setCellStyle(style);
cell.setCellValue("结束日期");
int rowNum=1;
for(int currentPage=1;currentPage<=totalPage;currentPage++){
param.setSqlCurrentPage(currentPage);
param.setSqlPageSize(pageSize);
param.setDet(1L);
list=iwbglDao.selectList(param);
createExcelDataRow(sheet,list,rowNum);
}
return wb;
}
private int createExcelDataRow(Sheet sheet,List<TbCdeShAgentRoadRateOutBean> list,int rowNum){
for(TbCdeShAgentRoadRateOutBean b:list){
Row dataRow = sheet.createRow(rowNum);
dataRow.createCell(0).setCellValue(b.getRn());
dataRow.createCell(1).setCellValue(getDataValue(b.getMwayName()));
dataRow.createCell(2).setCellValue(getDataValue(b.getMwayCode()));
dataRow.createCell(3).setCellValue(getDataValue(b.getTransType()));
dataRow.createCell(4).setCellValue(getDataValue(b.getAgentCop()));
dataRow.createCell(5).setCellValue(getDataValue(b.getFiveT()));
dataRow.createCell(6).setCellValue(getDataValue(b.getEightT()));
dataRow.createCell(7).setCellValue(getDataValue(b.getFifteenT()));
dataRow.createCell(8).setCellValue(getDataValue(b.getTwentyFiveT()));
dataRow.createCell(9).setCellValue(getDataValue(b.getStartDate()));
//dataRow.getCell(9).setCellType(Cell.CELL_TYPE_STRING);
dataRow.createCell(10).setCellValue(getDataValue(b.getEndDate()));
//dataRow.getCell(10).setCellType(Cell.CELL_TYPE_STRING);
rowNum++;
}
return rowNum;
}
private String getDataValue(Object o){
return o==null?"":o.toString();
}
html
//导出数据
window.location.href="${path}/wbgl/exportFile?a=b&c=d"
java下载excel,excel从数据库获取数据的更多相关文章
- easyui-datagrid通过action从数据库获取数据的关键代码
实际上是结合struts2来从数据获取json格式的数据. 关键代码: GetUserAction.java代码 package com.log.control; import java.io ...
- Loadrunner脚本优化-参数化之关联MySQL数据库获取数据
脚本优化-参数化之关联MySQL数据库获取数据 by:授客 QQ:1033553122 测试环境: Loadrunner 11 Win7 64位 实操: 1. 安装MySQL ODBC驱动程序 O ...
- 如何用asp.net MVC框架、highChart库从sql server数据库获取数据动态生成柱状图
如何用asp.net MVC框架.highChart库从sql server数据库获取数据动态生成柱状图?效果大概是这样的,如图: 请问大侠这个这么实现呢?
- AngularJs从数据库获取数据并显示
哈哈,昨天下午和今天早上,花上一些时间,学习AngularJs,仅是粗略预览一下.很好,非常好. 由于手上有开发ASP.NET MVC环境,就在这测试下,去数据库获取数据并显示数据. 数据库表创建,添 ...
- Python使用Flask框架,结合Highchart处理csv数据(引申-从文件获取数据--从数据库获取数据)
参考链接:https://www.highcharts.com.cn/docs/process-text-data-file 1.javascript代码 var options = { chart: ...
- 从Excel、CSV文件获取数据
#region 从Excel获取数据 /// <summary> /// 从Excel获取数据 /// </summary> /// <param name=" ...
- 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。
最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...
- Excel VBA连接MySql 数据库获取数据
编写Excel VBA工具,连接并操作Mysql 数据库. 系统环境: OS:Win7 64位 英文版 Office 2010 32位 英文版 1.VBA连接MySql前的准备 Tools---> ...
- 动态从数据库获取数据,省市县三级联动,有校验,导出Excel模板
话不多说,看效果图,直接上代码. sheet 商户表 hideSheet ,功能完成后隐藏的Sheet,用于储存下拉框中的信息,(以一定的规则将所需数据存储在表格中). 下面是代码 部分数据需要在导 ...
随机推荐
- java.lang.NoClassDefFoundError: org/apache/jute/CsvOutputArchive
1. 问题 看到上面的错误 你怎么想? 包冲突?我这里不是.项目用到了zookeeper,这个类是zookeeper的核心包里的类. 控制台一直打印这个错误 但是项目不影响使用,奇怪! 2. 解决办法 ...
- Unity3D用户手册 学习
- css获取样式
1)类似id.style.width:只能获取<div style="width:200px;">内联样式</div>里面style里的width,即内联样 ...
- Apache和Nginx负载均衡集群及测试分析
一.应用场景介绍 本文主要是介绍Apache和Tomcat在Linux环境下的安装讲解以及AJP协议动静分离负载均衡的实现,以及与Nginx负载性能比较.联网安装较为简单,故此处只说脱机的Linux环 ...
- MT7628如何配置使用 Openwrt路由模式 (校园网配置)
1.设置wan,把网线插入wan口 1) 在 MT7628 开发板上的 3 个网口默认都是“LAN 口”功能,但拨号上网一般需要用到“WAN口”的功能,所以我们需要将其中一个切换为“WAN 口”,这里 ...
- python从文本中提取某酒店机顶盒号和智能卡号
1.某项目中经常遇到需要关闭一些机顶盒消费权限.但是给过来的不是纯字符串,需要自己提取. 有400多个机顶盒和智能卡.nodepad++的列块模式也可以提取,但是还是稍微麻烦,因为列不对等 先复制到文 ...
- js检测字符串的字节数
在js中字符串可以存放数字,字母或者汉字,但是又一个问题就是,数字和字母都是占一个字节,而一个汉字占2个字节.如果在一个字符串中既有字母又有汉字怎么判断字节数呢 第一种简单粗暴 var str = ' ...
- VARCHAR(N)类型,utf8编码,则N最大值为多少,n表示什么?
4.0版本以下,varchar(20),指的是20字节,如果存放UTF8汉字时,只能存6个(每个汉字3字节) 5.0版本以上,varchar(20),指的是20字符,无论存放的是数字.字母还是UTF8 ...
- centos redis5 安装 和 基本配置
1 下载 redis wget http://download.redis.io/releases/redis-5.0.0.tar.gz 2 解压 tar xzf redis-5.0.0.tar.gz ...
- 决策树原理实例(python代码实现)
决策数(Decision Tree)在机器学习中也是比较常见的一种算法,属于监督学习中的一种.看字面意思应该也比较容易理解,相比其他算法比如支持向量机(SVM)或神经网络,似乎决策树感觉“亲切”许多. ...