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. git从github下载代码

    Github作为远程仓库的使用详解  http://blog.csdn.net/djl4104804/article/details/50778717 centos local:        通过g ...

  2. BZOJ 1194: [HNOI2006]潘多拉的盒子( BFS + tarjan + dp )

    O(S²)枚举2个诅咒机, 然后O(n²)BFS去判断. 构成一个有向图, tarjan缩点, 然后就是求DAG的最长路.. ------------------------------------- ...

  3. java的for循环问题的解决,以及安卓中ListView插入数据的问题

    package test.testdemo; import org.springframework.jdbc.core.JdbcTemplate; import com.util.Pub; publi ...

  4. 初识 python

    Python 语言介绍 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python变化 python 2 和 python 3 1.1/2 等于0.5 2.print ...

  5. 虚拟环境管理工具virtualenvwrapper-win初试

    virtualenv 用于建立虚拟目录,但是每次进入指定虚拟都必须activate, 而且如果一个环境很久没用了,不记得环境所在目录,就会遗忘该环境,virtualenvwrapper 正是解决以上问 ...

  6. [LeetCode]题解(python):021-Merge Two Sorted Lists

    题目来源: https://leetcode.com/problems/merge-two-sorted-lists/ 题意分析: 题目给出两个排好序的链表,将这两个链表整合成一个新的有序的链表. 题 ...

  7. C和指针---读书笔记。

    C和指针---读书笔记.1,unsigned int  声明无符号int类型 默认是 singned,即此整数类型包括正负数.也可用于long上.说明符有 unsigned signed short ...

  8. Javascript常用函数收集(不定期更新)

    str.replace('/正则表达式/','替换内容'); //正则替换str.match('/正则表达式/','替换内容'); //正则匹配 str.indexOf('查找代码'); //查找是否 ...

  9. html5 学习笔记

    一.ie8及以下对html5相关语义标签的支持 <!-[if lt IE9]> <script src="html5.js"></script> ...

  10. Codeforces 479D - Long Jumps

    479D - Long Jumps, 480B - Long Jumps It , or . If we can already measure both x and y, output . Then ...