使用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";
}

代码是不是特别简单呢。假设有问题给我写评论

时间: 2024-08-03 03:15:56

使用struts2和poi导出excel文档的相关文章

POI导出EXCEL文档

package com.wiseweb.util.excel; import java.io.*; import java.util.*; import javax.swing.JOptionPane; import org.apache.poi.hssf.usermodel.*; import org.apache.poi.hssf.util.HSSFColor; import com.wiseweb.pom.entity.BaiinfoPriceTime; public class Expo

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

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

POI操纵EXCEL文档之导入文档(一)

             当前主流的后台管理系统,相信都会有文档导入导出的功能.而这其中用到的技术又是多种多样,有用POI框架,也有用JXLS技术的.技术只是手段,项目中实现功能最重要.今天主要说下如何利用POI技术操作EXCEL文档. POI 导入EXCEL文档: 1,首先,要导入EXCEL 文档,就必须要先有导入的模板文件,在这里,我提供好了制作好的EXCEL 模板文件提供下载:( EXCEL文档模板示例下载 ) 2,有了EXCEL 模板文件,就开始编写页面,并编写后台逻辑代码了: <%--

Asp.net中导出Excel文档(Gridview)

主要思路,通过GridView来导出文档. 新建一个Aspx页面,页面创建GridView控件,后台绑定好数据源.然后load中直接打印即可导出 前台的GridView <asp:GridView ID="GridView1" BorderColor="Black" runat="server" AutoGenerateColumns="False" Font-Size="12px" Width=&q

Apache POI -- Java 导出Excel文档(笔记)

一.Action类 import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Met

Apache POI处理excel文档

目前比较流行处理excel文档的方式一般有两种,分别是POI和JXL.重量级POI优缺点:适合对excel文档细节有比较专业的要求,如使用公式.宏等高级功能:缺点是操作相对繁琐,非纯java编写的架包,跨平台性有待加强.轻量级JXL优缺点:Jxl是纯javaAPI,跨平台性优越,操作相对简便:缺点是对excel文档的一些高级功能不支持,但可以满足日常需求.这里我们介绍POI的基本使用. 1.首先导入相关架包,如图: 这里还要注意你开发项目的JDK版本是什么,要根据相应JDK版本下载不同POI的版

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

J2EE ExcelStrutsXML 在公司实习期间,带我的老师让我实现一功能——在显示课表的页面上上点击“导出文件“时能以word文档形式下载课表.将课表导出到excel里的功能他们已经实现了,用的是Struts2+poi实现的.poi对excel表格操作能力很强,但是对word文档的支持一直没有更新,操作能力有限. iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf 的文档,而且可以将XML.Ht

Struts2+ExtJS+poi导出excel

首先生成Excel import java.io.IOException; import java.io.OutputStream; import javax.servlet.http.HttpServletResponse; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; import org.apache.poi.hssf.usermodel.

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

一.背景 在之前做的小项目里有一需求是:要求将一活动录入的数据进行统计,并以excel表格形式导出来,并且对表格格式要求并不高. 二.问题分析 鉴于用户只要求最终将数据库中的数据导出excel,对于格式要求不高,因此只需要在页面上加入一条链接,后台action中读取数据然后通过第三方组件导出,再下载,就能满足这个简单的需求了.首先上bing找了有关数据导出的组件,NPOI是弹出的次数最多的一项,在这里也要说到以前做winform窗体开发用到过水晶报表的方法,其实实现方法比较多,由于以前没接触过N