java的excel表格的导出与下载
今天做一个java对excel表格的导出和下载的时候,从网络上搜寻了下载的模板,代码如下:
控制层:
@RequestMapping(value = "excelOut_identifier")
public void excelOutIdentifier(HttpServletRequest request, HttpServletResponse response, Long id, ActivationCodeSearchForm searchForm, ExhibitorInfoVenueBranchRelEditForm editForm,
HttpSession session) {
try {
//获取数据
List<ActivationCodeDto> list = organizerService.ActivationCodeById(id,searchForm).getRows(); //excel标题
String[] title = {"激活码","主办方","创建时间","失效时间"}; //excel文件名
String fileName = "激活码信息表"+System.currentTimeMillis()+".xls"; //sheet名
String sheetName = "激活码信息表"; SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String [][] content = new String[list.size()][];
for (int i = ; i < list.size(); i++) {
content[i] = new String[list.size();
ActivationCodeDto obj = list.get(i);
content[i][] = obj.getActivationCode();
content[i][] = obj.getExhibitorInfoName();
content[i][] = sdf.format(obj.getCreateTime());
content[i][] = sdf.format(obj.getDisabledTime());
}
//创建HSSFWorkbook
HSSFWorkbook wb = organizerService.excelOutIdentifier(sheetName, title, content, null);
this.organizerService.setResponseHeader(response, fileName);
OutputStream os = response.getOutputStream();
wb.write(os);
os.flush();
os.close();
}catch(IOException e1) {
e1.printStackTrace();
}
}
service层:
public HSSFWorkbook excelOutIdentifier(String sheetName,String []title,String [][]values, HSSFWorkbook wb){
// 第一步,创建一个HSSFWorkbook,对应一个Excel文件
if(wb == null){
wb = new HSSFWorkbook();
}
// 第二步,在workbook中添加一个sheet,对应Excel文件中的sheet
HSSFSheet sheet = wb.createSheet(sheetName);
// 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow();
// 第四步,创建单元格,并设置值表头 设置表头居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式
//声明列对象
HSSFCell cell = null;
//创建标题
for(int i=;i<title.length;i++){
cell = row.createCell(i);
cell.setCellValue(title[i]);
cell.setCellStyle(style);
}
//创建内容
for(int i=;i<values.length;i++){
row = sheet.createRow(i + );
for(int j=;j<values[i].length;j++){
//将内容按顺序赋给对应的列对象
row.createCell(j).setCellValue(values[i][j]);
}
}
return wb;
}
public void setResponseHeader(HttpServletResponse response, String fileName) {
try {
try {
fileName = new String(fileName.getBytes(),"ISO8859-1");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
response.setContentType("application/octet-stream;charset=ISO8859-1");
response.setHeader("Content-Disposition", "attachment;filename="+ fileName);
response.addHeader("Pargam", "no-cache");
response.addHeader("Cache-Control", "no-cache");
} catch (Exception ex) {
ex.printStackTrace();
}
}
前端:
<button id="js-export" type="button" class="btn btn-primary">导出Excel</button>
jsp:
$('#js-export').click(function(){
window.location.href="${ctxRoot}/admin/organizer/excelOut_identifier.do?id=${id}"
});
注意事项:
一开始我的前端页面时这样写的,是写的一个ajax请求:
<a class="btn btn-success es-ajax"
href="${ctxRoot}/admin/organizer/excelOut_identifier.do?id=${id}">导出excel</a>
在后端程序都实现可以跑的通的情况下,也没有什么日志错误的打印,前端页面并没有弹出下载的页面,然后再网络上搜索了方法,测试了一遍,都是不行,最后再一篇文章中看到了一个答案,说下载的情况下,使用ajax请求时,是不会弹出下载的页面出来的,随即将其修改成window.location.href的请求方式了。果然就解决了这个问题
java的excel表格的导出与下载的更多相关文章
- java对excel表格上传和下载的处理方法
详见:http://www.jb51.net/article/120443.htm
- java实现excel的导入导出(poi详解)[转]
java实现excel的导入导出(poi详解) 博客分类: java技术 excel导出poijava 经过两天的研究,现在对excel导出有点心得了.我们使用的excel导出的jar包是poi这个 ...
- Java读取excel表格
Java读取excel表格 一般都是用poi技术去读取excel表格的,但是这个技术又是什么呢 什么是Apache POI? Apache POI是一种流行的API,它允许程序员使用Java程序创建, ...
- Java操作excel表格
(1)Java读取excel表格 package com.songyan.excel; import java.io.File; import java.io.FileInputStream; imp ...
- JAVA处理Excel表格数据并写入数据库
package com.hncj.test; import java.io.FileInputStream; import java.sql.Connection; import java.sql.D ...
- 使用NPOI将数据库里信息导出Excel表格并提示用户下载
使用NPOI进行导出Excel表格大家基本都会,我在网上却很少找到导出Excel表格并提示下载的 简单的代码如下 //mvc项目可以传多个id以逗号相隔的字符串 public ActionResult ...
- java对excel表格的上传和下载处理
Excel表格文件的上传和下载,java中涉及到文件肯定会有io流的知识. 而excel文件就要涉及到poi技术,而excel的版本包括:2003-2007和2010两个版本, 即excel的后缀名为 ...
- java实现excel表格导出
Java 实现导出excel表 POI 1.首先下载poi-3.6-20091214.jar,下载地址如下: http://download.csdn.net/detail/evangel_z/389 ...
- java 中Excel的导入导出
部分转发原作者https://www.cnblogs.com/qdhxhz/p/8137282.html雨点的名字 的内容 java代码中的导入导出 首先在d盘创建一个xlsx文件,然后再进行一系列 ...
随机推荐
- ROS第一次开网站跳转到公告页(任意地址跳转)方法
原文: http://bbs.routerclub.com/thread-74654-1-5.html ROS首页强开配置脚本: /ip firewall natadd action=dst-nat ...
- 基于 Docker 实现 DevOps 的一些探索
DevOps 介绍 DevOps(Deveplopment 和 Operations 的简称),中译为开发运维一体化,可定义为是一种过程.方法.文化.运动或实践,主要是为了通过一条高度自动化的流水线来 ...
- python 进程数据通信
进程通信的第一种方式from multiprocessing import Process,Queue def f(q): q.put([42,2,'hello']) print('zi q id:' ...
- Kubernetes管理GPU应用
目录 简介 GPU驱动 Nvidia-docker Nvidia-device-plugin 在Kubernetes上运行GPU应用 附录 简介 伴随着人工智能技术的发展,机器学习的应用场景越来越广泛 ...
- 学习Linq之前必须要了解的扩展方法
本文主要以下面几个方面来详细讲解扩展方法:在C#3.0之前没有扩展方法的状态(或者你不会使用不知道扩展方法的时候).扩展方法的语法及怎么使用.怎么正确的使用扩展方法: 一.首先说一下在C#3.0之前没 ...
- 【转】Visual Studio Code(VS code)你们都在用吗?或许你们需要看一下这篇博文
写在前面 在前端开发中,有一个非常好用的工具,Visual Studio Code,简称VS code. 都不用我安利VS code,大家就会乖乖的去用,无数个大言不惭的攻城狮,都被VS code比德 ...
- 详解Vue中的虚拟DOM
摘要: 什么是虚拟DOM? 作者:浪里行舟 Fundebug经授权转载,版权归原作者所有. 前言 Vue.js 2.0引入Virtual DOM,比Vue.js 1.0的初始渲染速度提升了2-4倍,并 ...
- Stage3D大冒险
摘自:http://dreamana.com/weblog/?p=92 摘自:http://baike.baidu.com/view/6794042.htm Stage3D的Flash Player和 ...
- itextpdf使用中文字体的三种方式
使用itextpdf时,默认的字体没有中文,总结了一下使用中文字体的方式. 1.使用windows系统下的字体,该种方式的具体操作可以看另一篇博客:https://www.cnblogs.com/wh ...
- NBU恢复数据库数据文件报错RMAN-06091
RMAN-06091: no channel allocated for maintenance (of an appropriate type) 一.错误信息 报错信息如下 Starting res ...