Java Struts2 POI创建Excel文件并实现文件下载

在做管理系统的时候,经常会用到文件的下载,特别是Excel报表的创建与下载,下面就来简单演示一下,Struts2实现的Excel文件的下载功能。

由于本实验是要动态创建Excel文件,因此需要一些jar:

Java读写Excel的包是Apache POI(项目地址:),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版。

Apache POI 代码例子地址:

1. 配置struts.xml

<struts><package name="export" namespace="/export" extends="struts-default"><action name="*" class="excelExportAction" method="{1}"/><!–测试Excel下载–><action name="exportExcel" class="excelExportAction" method="exportExcel"><result name="success" type="stream"><!– 下载文件的类型,如果你不知道是什么格式,可以去 tomcat\conf\web.xml下找 –><param name="contentType">application/vnd.ms-excel</param><!– 返回流 excelStream为action中的流变量名称 –><param name="inputName">excelStream</param><!– attachment 这个位置的参数挺特殊的,可以设置成下载时,是否出现个下载提示框,或者直接下载之类的。fileName指定生成的文件名字(适合动态生成文件名,比如做报表时,一般都要说是几月的统计数据之类)为action中变量–><param name="contentDisposition">attachment;filename=${excelFileName}</param><param name="bufferSize">1024</param></result></action></package></struts>2.编写Action类

POI的Maven配置如下:

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.9</version></dependency>

Action类如下:import org.apache.poi.hssf.usermodel.*;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文件中的 sheetHSSFSheet 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;}}注:本文参考了网上的一篇文章,,但是忘记地址了,对作者深表歉意。

版权声明:本文为博主原创文章,未经博主允许不得转载。

转动心中的期待,血在澎湃,吃苦流汗算什么。

Java Struts2 POI创建Excel文件并实现文件下载

相关文章:

你感兴趣的文章:

标签云: