Struts2使用POI创建Excel并下载
本文将讲解在Struts2框架下如何使用POI创建Office Excel文档并实现下载功能。
Apache POI ,操作微软文档的Java API,简单来说就是可以用来操作Office文档的API.
Apache POI官网:http://poi.apache.org/
Apache POI Jar包官方下载:http://poi.apache.org/download.html
效果截图:
1.创建一个Java Web工程并配置Struts2环境,详细步骤省略。。。
注意:引入POI jar包,此工程中只需要poi-3.13.jar即可。
jar包:
2.修改index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
<head>
<base href="<%=basePath%>">
<title>首页</title>
</head> <body>
<a href="exportExcel.action">下载</a>
</body>
</html>
3.修改Struts.xml配置如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!--配置包时必须指定name属性,该属性值可以任意取名,但必须唯一。 -->
<package name="aynu" extends="struts-default"> <!--测试Excel下载 -->
<action name="exportExcel" class="com.xingyun.action.ExcelExportAction"
method="exportExcel">
<result name="success" type="stream">
<!-- 下载文件的类型,文件类型对照表参看 http://tool.oschina.net/commons -->
<param name="contentType">application/vnd.ms-excel</param>
<!-- 返回流 excelStream为action中的流变量名称 -->
<param name="inputName">excelStream</param>
<!-- 文件下载的处理方式,包括内联(inline)和附件(attachment) 提示下载 -->
<param name="contentDisposition">attachment;filename=${excelFileName}</param>
<param name="bufferSize">2048</param>
</result>
</action>
</package> </struts>
4.创建Action类
package com.xingyun.action;
import org.apache.poi.hssf.usermodel.*; import com.opensymphony.xwork2.ActionSupport; import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date; public class ExcelExportAction extends ActionSupport { /** 导出Excel测试 */
public String exportExcel() {
try {
//第一步,创建一个webbook,对应一个Excel文件
HSSFWorkbook wb = new HSSFWorkbook();
//第二步,在webbook中添加一个sheet,对应Excel文件中的 sheet
HSSFSheet sheet = wb.createSheet("测试表格1");
//第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制
HSSFRow row = sheet.createRow(0);
//第四步,创建单元格样式:居中
HSSFCellStyle style = wb.createCellStyle();
style.setAlignment(HSSFCellStyle.ALIGN_CENTER);
//第五步,创建表头单元格,并设置样式
HSSFCell cell; cell = row.createCell(0);
cell.setCellValue("员工工号");
cell.setCellStyle(style); cell = row.createCell(1);
cell.setCellValue("员工姓名");
cell.setCellStyle(style); cell = row.createCell(2);
cell.setCellValue("所属部门");
cell.setCellStyle(style); cell = row.createCell(3);
cell.setCellValue("职位");
cell.setCellStyle(style); cell = row.createCell(4);
cell.setCellValue("入职日期");
cell.setCellStyle(style); cell = row.createCell(5);
cell.setCellValue("备注");
cell.setCellStyle(style); //第六步,写入实体数据,实际应用中这些数据从数据库得到
Date today = new Date();
long aDay = 1000L*60*60*24;
SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 1; i <= 10; i++) {
row = sheet.createRow(i);
row.createCell(0).setCellValue(i);
row.createCell(1).setCellValue("员工" + i);
row.createCell(2).setCellValue("总公司");
row.createCell(3).setCellValue("普通员工");
row.createCell(4).setCellValue(fmt.format(new Date(today.getTime() + i * aDay)));
row.createCell(5).setCellValue("员工备注");
} //第七步,将文件存到流中
ByteArrayOutputStream os = new ByteArrayOutputStream();
wb.write(os);
byte[] fileContent = os.toByteArray();
ByteArrayInputStream is = new ByteArrayInputStream(fileContent); excelStream = is; //文件流
excelFileName = "report.xls"; //设置下载的文件名
}
catch(Exception e) {
e.printStackTrace();
} return "success";
} //-------------------------------------------------------------
private InputStream excelStream; //输出流变量
private String excelFileName; //下载文件名 public InputStream getExcelStream() {
return excelStream;
}
public void setExcelStream(InputStream excelStream) {
this.excelStream = excelStream;
}
public String getExcelFileName() {
return excelFileName;
}
public void setExcelFileName(String excelFileName) {
this.excelFileName = excelFileName;
}
}
5.启动Tomcat并发布后打开浏览器
http://127.0.0.1:8080/Struts2POIDownLoadExcelDemo/
效果图如下:
下载后打开文件效果图:
Struts2使用POI创建Excel并下载Demo.ZIP
源码下载:http://pan.baidu.com/s/1i3TXa8t 密码:3mmw
Struts2使用POI创建Excel并下载的更多相关文章
- Java Struts2 POI创建Excel文件并实现文件下载
Java Struts2 POI创建Excel文件并实现文件下载2013-09-04 18:53 6059人阅读 评论(1) 收藏 举报 分类: Java EE(49) Struts(6) 版权声明: ...
- struts2+hibernate+poi导出Excel实例
本实例通过struts2+hibernate+poi实现导出数据导入到Excel的功能 用到的jar包: poi 下载地址:http://poi.apache.org/ 根据查询条件的选择显示相应数据 ...
- 使用struts2和poi导出excel文档
poi眼下应该是比較流行的操作excel的工具了.这几天做了个struts2和poi结合使用来实现导出excel的功能.个人认为还是比較有用的.代码阅读起来也非常easy.下来就来分享下我的心得 1 ...
- java使用poi创建excel文件
import org.apache.poi.hssf.usermodel.HSSFCell;import org.apache.poi.hssf.usermodel.HSSFRow;import or ...
- POI导出excel并下载(以流的形式在客户端下载,不保存文件在服务器上)
import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFCellStyle; i ...
- java POI创建Excel示例(xslx和xsl区别 )
Java用来处理office类库有很多,其中POI就是比较出名的一个,它是apache的类库,现在版本到了3.10,也就是2014年2月8号这个版本. 在处理PPT,Excel和Word前,需要导入以 ...
- 在Struts2中使用poi进行excel操作下载的时候报getOutputStream() has already been called for this response 错误 [转]
在项目中用到了poi这个开源的操作excel文件的jar. 项目中用到struts2容器管理servlet.不是单纯的直接用servlet. workbook.write(os); ...
- 使用POI创建Excel文件下载
POIExcelUtils.java: package com.saicfc.pmpf.internal.manage.utils; import java.io.File; import java. ...
- POI导出Excel并下载
首先在pom.xml添加jar包: <!-- 导出excel --> <dependency> <groupId>org.apache.poi</groupI ...
随机推荐
- 简单实用jstl实现“登录|注册”
package com.ceshi; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.s ...
- IDA Pro使用技巧及大杂烩
IDA Pro使用技巧及大杂烩 IDA Pro基本简介 IDA加载完程序后,3个立即可见的窗口分别为IDA-View,Named,和消息输出窗口(output Window). IDA图形视图会有执行 ...
- 北京集训TEST12——PA( Mortal Kombat)
题目: Description 有一天,有N个外星人企图入侵地球.地球派出全球战斗力最强的M个人代表人类对抗外星人.根据外星的战斗规则,每个外星人应该分别与一名地球人对战(不同的外星人要与不同的地球人 ...
- 几个类和Table的方法
public class TableHelper { public static DataTable CreateTableFromClass(Type t) { DataTable dt = new ...
- TroubleShoot: Excel Services Fix - "The workbook cannot be opened".
1. 问题描述: 在SharePoint 2013 文档库中打开Excel 文件提示"The workbook cannot be opened" 错误提示框,文档不能正常显示. ...
- 缓存区溢出检测工具BED
缓存区溢出检测工具BED 缓存区溢出(Buffer Overflow)是一类常见的漏洞,广泛存在于各种操作系统和软件中.利用缓存区溢出漏洞进行攻击,会导致程序运行失败.系统崩溃.渗透测试人员利用这 ...
- git常用语句
1.安装git,也适用于升级 yum -y install gcc zlib-devel openssl-devel curl-devel \ expat-devel gettext-devel pe ...
- luogu P1510 精卫填海
题目描述 [版权说明] 本题为改编题. [问题描述] 发鸠之山,其上多柘木.有鸟焉,其状如乌,文首,白喙,赤足,名曰精卫,其名自詨.是炎帝之少女,名曰女娃.女娃游于东海,溺而不返,故为精卫.常衔西山之 ...
- proc_get_status() has been disabled for security reasons
找到php.ini搜索proc_get_status去掉即可.
- 谈Objective-C block的实现(转)
前言 这里有关于block的5道测试题,建议你阅读本文之前先做一下测试. 先介绍一下什么是闭包.在wikipedia上,闭包的定义)是: In programming languages, a clo ...