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. Nginx小技巧(一)隐藏版本号

    修改nginx.conf server_tokens作用域是http server location语句块 server_tokens默认值是on,表示显示版本信息,设置server_tokens值是 ...

  2. linux常用命令加实例大全

    目  录引言    1一.安装和登录    2(一)    login    2(二)    shutdown    2(三)    halt    3(四)    reboot    3(五)    ...

  3. EBS 数据库预克隆日志

    ora02@[/u07/CCTEST02/db/tech_st/11.1.0/appsutil/scripts/CCTEST02_test01] $ T02_test01/StageDBTier_06 ...

  4. STL之Queue(Q)

    STL的Queue(数据结构中的队列): 特点:FIFO 先进先出: 自适应容器(即容器适配器)   栈适配器STL queue  STL中实现的Queue: 用list来实现queue: queue ...

  5. RBAC - 基于角色的权限控制

    ThinkPHP中关于RBAC使用详解 自己的源码下载:百度网盘,thinkPHP文件夹下,RBAC文件夹. 重要的是,权限信息的写入函数等.在源码中能找到,Modules/Amin/Common/c ...

  6. 第一篇:NSTread线程的创建

    #import "ViewController.h" //导入头文件 #import <pthread.h> @interfaceViewController () @ ...

  7. 修改字符串 ToCharArray()

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  8. linux嵌入式: 实现自己的tree命令

    //# cat treecmd.c #include<stdio.h> #include<dirent.h> #include<sys/stat.h> #inclu ...

  9. 自己新建Xib 和.h .m文件关联

    代理中注意点 1.新建MainViewController.h 和 MainViewController.m文件: 新建Main.xib文件: 2.拖View到Main.xib中: 3.点击File’ ...

  10. url地址传参中文乱码处理

    1.将字符串转码:new String(“xxxxx”.getBytes("iso-8859-1"),"utf-8") 这种转码方式有很大的弊端,因为它是使用指 ...