首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

Java Struts2创造Excel文件并实现文件下载

2013-09-07 
Java Struts2创建Excel文件并实现文件下载在做管理系统的时候,经常会用到文件的下载,特别是Excel报表的创

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

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

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

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


1. 配置struts.xml

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文件中的 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;    }}

注:本文参考了网上的一篇文章,但是忘记地址了,对作者深表歉意。






热点排行