使用struts2和poi导出excel文档
poi眼下应该是比較流行的操作excel的工具了。这几天做了个struts2和poi结合使用来实现导出excel的功能。个人认为还是比較有用的。代码阅读起来也非常easy。下来就来分享下我的心得
1 struts2的下载excel文件机制
struts2的action中使用poi和输入输出流把二进制数据通过流的形式响应给client。client浏览器作出响应的处理,如弹出文件下载对话框
2 poi的用法
poi解析或生成excel网上资料特别多,这里我就不给出代码了
3 struts文件的相关配置
<result name="export" type="stream">
<param name="contentType">application/xls;charset=UTF-8</param>
<param name="contentDisposition">attachment;filename="${downloadFileName}"</param>
<param name="inputName">excelFile</param>
</result>
downloadFileName是下载文件的名称,能够使用固定的文件名称也能够使用动态的;excelFile是InputStream的属性名称
4 action的主要内容
(1)相关属性的getter和setter方法
private InputStream excelFile;
private String downloadFileName=String.valueOf(Calendar.getInstance().getTimeInMillis())+".xls"; public InputStream getExcelFile() {
return excelFile;
}
public void setExcelFile(InputStream excelFile) {
this.excelFile = excelFile;
} public String getDownloadFileName() {
return downloadFileName;
} public void setDownloadFileName(String downloadFileName) {
this.downloadFileName = downloadFileName;
}
(2)导出excel的主要代码
public void ExcelFile(String startCardNum,String num) throws Exception {
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.createSheet();
HSSFRow row = sheet.createRow(0);
//单元格和工作薄名称都要设置下编码。否则有中文的时候就会出现乱码
workbook.setSheetName(0, "卡号信息表" , HSSFWorkbook.ENCODING_UTF_16);
HSSFCell cell1=row.createCell((short)0);
cell1.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
cell1.setCellValue("卡号");
HSSFCell cell2=row.createCell((short)1);
cell2.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
cell2.setCellValue("password");
HSSFCell cell3=row.createCell((short)2);
cell3.setEncoding(HSSFWorkbook.ENCODING_UTF_16);
cell3.setCellValue("创建时间");
//取得符合条件的卡号信息
List<Card> all=cardService.queryCardByCondition(startCardNum, num);
Iterator<Card> it=all.iterator();
int j=1;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
while(it.hasNext()){
row=sheet.createRow(j);
Card c=it.next();
row.createCell((short)0).setCellValue(c.getCardNum());
row.createCell((short)1).setCellValue(c.getPassword());
row.createCell((short)2).setCellValue(sdf.format(c.getCreateDate()));
j++;
}
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
workbook.write(baos);
} catch (IOException e) {
e.printStackTrace();
}
byte[] aa = baos.toByteArray();
excelFile = new ByteArrayInputStream(aa,0,aa.length);
try {
baos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
导出的代码仅仅是给大家一个參照,当然使用jxl导出excel也是全然能够的
(3)导出excel的总方法
public String exportCardInfo() throws Exception {
String startNum=this.getRequest().getParameter("startCardNum");
String num=this.getRequest().getParameter("num");
ExcelFile(startNum,num);
this.setDownloadFileName(String.valueOf(Calendar.getInstance().getTimeInMillis())+".xls");
return "export";
}
代码是不是特别简单呢。假设有问题给我写评论
使用struts2和poi导出excel文档的更多相关文章
- struts2中利用POI导出Excel文档并下载
1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...
- Java之Poi导出Excel文档
一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...
- POI导出Excel文档通用工具方法
import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ...
- 转:ASP.NET MVC 将IList<T>导出Excel文档的泛型类
/// <summary> /// 提供将泛型集合数据导出Excel文档. /// </summary> /// <typeparam name="T" ...
- SpringBoot集成文件 - 如何使用POI导出Word文档?
前文我们介绍了通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.所以 ...
- poi导出word文档,doc和docx
maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...
- Struts2利用iText导出word文档(包含表格)以提供下载
J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...
- HSSF与XSSF导出excel文档
Apache POI Apache POI 是用Java编写的免费开源的跨平台的 Java API,它可以创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文 ...
- asp.net mvc4使用NPOI 数据处理之快速导出Excel文档
一.背景 在之前做的小项目里有一需求是:要求将一活动录入的数据进行统计,并以excel表格形式导出来,并且对表格格式要求并不高. 二.问题分析 鉴于用户只要求最终将数据库中的数据导出excel,对于格 ...
随机推荐
- NOIP2015酱油记
day0 坐动车到广州..下午就在酒店颓... day1 早上6:30起床...大概8:00到六中..ZSJZ众貌似很晚才到..毕竟他们酒店就在学校门口(真的就刚刚好是门口...),大概8:15进去机 ...
- [置顶] cocos2d-x 植物大战僵尸(13)类似酷跑的【同一角色不同动画间的切换的实现】
有几天没和大家分享博客了,原因很简单,就是我在运行第12章所写的代码时:(开始一切正常,不过没多久就出现了内存泄露!.可能求成心切吧,当时没多加考虑就把代码发上去了.我在此对看过第12章得 ...
- django开发简易博客(四)
上一节,我们讲述了怎么使用静态文件,并使用bootstrap对页面进行了美化,这一节我们将增强我们blog的功能,添加发表博客,删除博客的功能. 一.表单的使用 要实现添加blog的功能,就得使用表单 ...
- 高级UNIX环境编程2
perror("error:") ; strerror 日历时间:time_t (1970.1.1开始的秒数) struct timeval (秒数和微秒) struc ...
- Sqlite出现SQL error: database disk image is malformed的处理
SQLite有一个很严重的缺点就是不提供Repair命令.导致死亡提示database disk image is malformed它的产生有很多种可能,比如,磁盘空间不足,还有就是写入数据过程中突 ...
- poj 1035 Spell checker(hash)
题目链接:http://poj.org/problem?id=1035 思路分析: 1.使用哈希表存储字典 2.对待查找的word在字典中查找,查找成功输出查找成功信息 3.若查找不成功,对word增 ...
- gpg-agent具体配置
gpg(gnupg)工具使用很广泛,在前面一篇文章中就具体介绍:http://blog.csdn.net/dongtingzhizi/article/details/26362205,有一个问题值得关 ...
- SVN基础命令手册
SVN版本号:1.5 及更新版本号 名词说明: WC:Working Copy 你的工作区 Versioned:受控的:受版本号控制的 SVN是什么? SVN是开源的版本号控制系统. 比CVS很多其它 ...
- B - 最大报销额
注意超时问题,一个题可能有很多种方法解决,但是想到解决方法的同时一定要考虑这个方法的复杂度,特别是对于acm的题,有可能出现超时的情况,很浪费时间 正式比赛中就很遗憾,血的教训. 下面贴上超时的代码并 ...
- C++中,引用作为函数参数
引用作为函数参数 C++之所以增加引用类型, 主要是把它作为函数参数,以扩充函数传递数据的功能. ———————————————————— c++,函数传参:(1)将变量名作为实参和形参.这时传给形参 ...