Java学习之道:Java操作Excel之导出下载
页面放置一个button进行点击导出事件
<h:commandLink target="_parent" value="导出"
action="#{eveluatesubject.doSaveExcel}"
styleClass="cssButtonBG">
</h:commandLink>
后台的导出方法
/**
* 导出EXCEL
*
* @param request
* @return
*/
public String doSaveExcel() {
HttpServletRequest request = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
dooutof(request);
return null;
}
public String dooutof(HttpServletRequest request) {
// 文件名与路径
String realPath = request.getRealPath("");
String fileName = "导出的文件名称.xls";
File file = new File(realPath + "//xxfzpj//tempPath//");//导出文件存放的位置
if (!file.exists()) {
file.mkdirs();
}
realPath = realPath + "//xxfzpj//tempPath//" + fileName;
// 建立工作薄并写表头
try {
WritableWorkbook wwb = Workbook.createWorkbook(new File(realPath));
WritableSheet ws = wwb.createSheet("Sheet1", 0);// 建立工作簿
// 写表头
jxl.write.Label label1 = new jxl.write.Label(0, 0, "列1");
jxl.write.Label label2 = new jxl.write.Label(1, 0, "列2");
jxl.write.Label label3 = new jxl.write.Label(2, 0, "列3");
jxl.write.Label label4 = new jxl.write.Label(3, 0, "列4");
jxl.write.Label label5 = new jxl.write.Label(4, 0, "列5");
ws.addCell(label1);// 放入工作簿
ws.addCell(label2);
ws.addCell(label3);
ws.addCell(label4);
ws.addCell(label5);
// 写入信息
List<Map> listmsg = 数据库中读出的内容(运行SQL);
for (int i = 0; i < listmsg.size(); i++) {
label1 = new jxl.write.Label(0, i + 1, listmsg.get(i).get(
"subject_id").toString().trim());// 建立第一列
label2 = new jxl.write.Label(1, i + 1, listmsg.get(i).get(
"subject_name").toString().trim());// 建立第二列
if (listmsg.get(i).get("object_name") != null
&& "" != listmsg.get(i).get("object_name")) {
label3 = new jxl.write.Label(2, i + 1, listmsg.get(i).get(
"object_name").toString().trim());// 建立第三列
} else {
label3 = new jxl.write.Label(2, i + 1, "未定义评价对象名称!");
}
label4 = new jxl.write.Label(3, i + 1, listmsg.get(i).get(
"mode_name").toString().trim());// 建立第四列
label5 = new jxl.write.Label(4, i + 1, listmsg.get(i).get(
"type_name").toString().trim());// 建立第五列
ws.addCell(label1);// 放入工作簿
ws.addCell(label2);
ws.addCell(label3);
ws.addCell(label4);
ws.addCell(label5);
}
// 写入Exel工作表
wwb.write();
// 关闭Excel工作薄对象
wwb.close();
// 下载
FacesContext ctx = FacesContext.getCurrentInstance();
String contentType = "application/x-download";
HttpServletResponse response = (HttpServletResponse) ctx
.getExternalContext().getResponse();
response.setContentType(contentType);
response.setHeader("Content-Disposition", "attachment;filename="
+ new String(fileName.getBytes("gb2312"), "ISO8859-1"));
HttpServletRequest request1 = (HttpServletRequest) FacesContext
.getCurrentInstance().getExternalContext().getRequest();
ServletOutputStream out = response.getOutputStream();
byte[] bytes = new byte[0xffff];
InputStream is = new FileInputStream(new File(realPath));
int b = 0;
while ((b = is.read(bytes, 0, 0xffff)) > 0) {
out.write(bytes, 0, b);
}
is.close();
out.flush();
ctx.responseComplete();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}// 此处建立路径
return null;
}
Java学习之道:Java操作Excel之导出下载的更多相关文章
- Java学习之道:Java 导出EXCEL
1.Apache POI简单介绍 Apache POI是Apache软件基金会的开放源代码函式库.POI提供API给Java程式对Microsoft Office格式档案读和写的功能. .NET的开 ...
- Java学习之道:Java项目打包发布
Java项目打包发布 如果只想发布为一个可执行的jar包,使用eclipse的Export功能就可以了 使用eclipse的Export功能,将项目中的所有package打包为一个pet.jar文件, ...
- java学习笔记07--日期操作类
java学习笔记07--日期操作类 一.Date类 在java.util包中定义了Date类,Date类本身使用非常简单,直接输出其实例化对象即可. public class T { public ...
- 摘自:java夜未眠之java学习之道
目前Java可以说是产业界和学术界最热门的语言,许多读者都很急切想把Java学好.除非是武侠小说中的运功传送内力的方式,否则花上一段时间苦学是免不了的.花时间,不打紧,就是怕方法错误,事倍功半.我认为 ...
- 【JAVA】使用Aphache poi操作EXCEL 笔记
1 下载poi,地址 http://poi.apache.org/ 选择3.9版本. 2 刚开始尝试 把poi.jar放在D:\Program Files\java\jdk1.6.0_20\lib(不 ...
- Java 学习笔记(16)——Java数据库操作
数据库操作是程序设计中十分重要的一个部分,Java内置JDBC来操作数据库 JDBC使用 JDBC--Java Database connecting Java数据库连接:本质上JDBC定义了操作数据 ...
- Java 学习笔记(14)—— 文件操作
java文件操作主要封装在Java.io.File中,而文件读写一般采用的是流的方式,Java流封装在 java.io 包中.Java中流可以理解为一个有序的字符序列,从一端导向到另一端.建立了一个流 ...
- Java学习之道:空指针错误求解救????????????
运行下面这个主方法红色代码的地方就报如下错: https://api.weibo.com/2/users/show.json?access_token=2.00szM9cCc4R_EC6ebcf150 ...
- 【java学习笔记】文件操作
文件操作 java.io.File ①创建删除文件及目录 ②查看文件及目录属性 ③文件过滤器 (PS:不包括文件读写数据) 1.单个文件 创建单个文件,查看属性,删除单个文件. package tmp ...
随机推荐
- Linux双网卡绑定实现负载均衡
系统环境:CentOS release 6.9 (Final) Linux centos6 2.6.32-696.10.1.el6.x86_64 Ubuntu系统下使用ifenslave进行网卡配置, ...
- HTML 3秒一换轮播(鼠标选中旋转停止定时) 动画案例
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- redis数据库安装及简单的增删改查
redis下载地址:https://github.com/MSOpenTech/redis/releases. 解压之后,运行 redis-server.exe redis.windows.conf ...
- 项目实战2—LVS负载均衡
负载均衡集群企业级应用实战-LVS 实现基于LVS负载均衡集群的电商网站架构 随着业务的发展,网站的访问量越来越大,网站访问量已经从原来的1000QPS,变为3000QPS,网站已经不堪重负,响应缓慢 ...
- Servlet编程实例2
上次实验中利用HttpServletRespon.sendRedict()方法来实现页面的转跳,而这种重定向请求的方法无法传递缓存的内容. 所以为了做出改进,这次使用RequestDispatcher ...
- 同步docker的时间
因为在没设置的docker中,其时间与主机相差8小时. 在docker命令行中输入 # echo "Asia/Shanghai" > /etc/timezone# dpkg ...
- Linux系统查找文件目录的命令
查找目录名autobackup,并且列出路径:find -name 'autobackup'-type d find -name 'directoryname'-type d
- Maven依赖分析
背景 昨天帮一位同事排查了一个依赖冲突的问题.问题的现象就是在IntelliJ IDEA运行项目正常,但是打包(Maven assembly jar)之后传到服务器运行失败,报错:Caused by: ...
- ZZCMS8.1|代码审计
这周的审计任务 ZZCMS8.1是站长招商网内容管理系统.审计这个CMS的原因很多,这里就不详说了(其实是漏洞类型多点) ...
- 开源API测试工具 Hitchhiker v0.5更新 - 完善细节
Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起管理Ap ...