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文档的更多相关文章

  1. struts2中利用POI导出Excel文档并下载

    1.项目组负责人让我实现这个接口,因为以前做过类似的,中间并没有遇到什么太困难的事情.其他不说,先上代码: package com.tydic.eshop.action.feedback; impor ...

  2. Java之Poi导出Excel文档

    一.Poi简介 在后台管理系统中,我们经常要做的导出操作,通常导出为Excel文档的形式,而Poi则提供了这种需要的支持. 二.Workbook/HSSFWorkbook/XSSFWorkbook 1 ...

  3. POI导出Excel文档通用工具方法

    import java.lang.reflect.InvocationTargetException; import java.util.List; import java.util.Map; imp ...

  4. 转:ASP.NET MVC 将IList<T>导出Excel文档的泛型类

    /// <summary> /// 提供将泛型集合数据导出Excel文档. /// </summary> /// <typeparam name="T" ...

  5. SpringBoot集成文件 - 如何使用POI导出Word文档?

    前文我们介绍了通过Apache POI导出excel,而Apache POI包含是操作Office Open XML(OOXML)标准和微软的OLE 2复合文档格式(OLE2)的Java API.所以 ...

  6. poi导出word文档,doc和docx

    maven <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><dependency> <gro ...

  7. Struts2利用iText导出word文档(包含表格)以提供下载

    J2EE ExcelStrutsXML  在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了, ...

  8. HSSF与XSSF导出excel文档

    Apache POI Apache POI 是用Java编写的免费开源的跨平台的 Java API,它可以创建和维护操作各种符合Office Open XML(OOXML)标准和微软的OLE 2复合文 ...

  9. asp.net mvc4使用NPOI 数据处理之快速导出Excel文档

    一.背景 在之前做的小项目里有一需求是:要求将一活动录入的数据进行统计,并以excel表格形式导出来,并且对表格格式要求并不高. 二.问题分析 鉴于用户只要求最终将数据库中的数据导出excel,对于格 ...

随机推荐

  1. Maxicode码

    Maxicode的缘起和发展 1980年代晚期,美国知名的UPS(United Parcel Service)快递公司认知到利用机器辨读资讯可有效改善作业效率.提高服务品质,故从1987年开始着手於机 ...

  2. 函数重载不仅仅是看其参数,还要看是否有const修饰

    比如QString有两个函数,可以堂而皇之的存在,原因就在于有了const修饰以后,编译器不把两个函数当作同一个函数名了: QChar * data() const QChar * data() co ...

  3. Linux和windows下的shutdown命令

    Linux下的shutdown命令 shutdown [options] [time] [wall] options: --help 获取帮助 -h 关机 -r 重启 -c 取消 -k 仅显示警告信息 ...

  4. XMPP个人信息展示

    在现阶段的通信服务中.各种标准都有,因此会出现无法实现相互连通,而XMPP(Extensible Message and presence Protocol)协议的出现.实现了整个及时通信服务协议的互 ...

  5. C# 中根据datetime的值来计算属于本年的第几周,类似delphi中的weekoftheyear功能

    /// <summary> /// 获得今天是今年的第几周 /// </summary> /// <param name="year">< ...

  6. opencv kmeans 图像分割

    利用kmeans算法,将彩色图像的像素点作为样本,rgb值作为样本的属性, 对图像所有的像素点进行分类,从而实现对图像中目标的分割. c++代码(openCV 2.4.11) Scalar color ...

  7. VMware-Workstation安装在ubuntu15.04(内核3.19)

    安装的最新版的linux15.04 安装VMware-Workstation11,运行gui程序的时候出现,VMware Kernel Module Update的提示窗口, 说是要更新vmnet-d ...

  8. Ubantu指令收藏

    Ubuntu常用命令大全,学习ubuntn系统的朋友可以收藏下,用ctrl+F查找即可   一.文件/文件夹管理 ls 列出当前目录文件(不包括隐含文件) ls -a 列出当前目录文件(包括隐含文件) ...

  9. c++ namespace命名空间详解

    What is a namespace? A namespace defines an area of code in which all identifiers are guaranteed to ...

  10. 【JSP】JSTL核心标签库的使用方法和示例

    JSTL 核心标签库 JSTL 核心标签库标签共有13个,功能上分为4类: 1. 表达式控制标签:out.set.remove.catch 2. 流程控制标签:if.choose.when.other ...