`

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

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

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

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

Apache POI 代码例子地址:http://poi.apache.org/spreadsheet/quick-guide.html

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.8</version>
</dependency>


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


参考网址:
http://blog.csdn.net/zht666/article/details/11091505
分享到:
评论
1 楼 herodie4444 2017-09-28  
看起来好像不难。

相关推荐

    Java Struts2+poi插件 实现导出Excel

    将Workbook写入到HttpServletResponse的OutputStream中,设置合适的Content-Type(如application/vnd.ms-excel)和文件名头(Content-Disposition),这样浏览器就会弹出下载对话框,用户可以选择保存Excel文件。...

    Struts2文件流方式导出下载excel、Txt、image图片

    通过上述步骤,我们就可以在Struts2框架下实现文件流方式的下载功能,无论是Excel、TXT还是图片,都能有效地直接返回给浏览器,让客户端进行下载。这种方式既节省了服务器资源,也提高了用户体验。在实际项目中,...

    struts2实现excel导出

    在Struts2框架中,实现Excel导出的功能主要依赖于Apache POI库,这是一个用于读写Microsoft Office格式档案的Java库。以下将详细介绍如何利用Struts2和POI实现Excel导出。 首先,你需要在项目中引入Apache POI库。...

    struts2 Excel导入数据库

    总结,这个项目展示了如何结合Struts2的MVC架构、Apache POI的Excel处理能力和JDBC的数据库操作,实现从Excel文件批量导入数据到SQL Server 2000数据库的功能。这个过程涉及文件上传、数据读取、数据库交互等多个...

    struts2 支持的下载以及如何动态生成excel表格文件

    总的来说,Struts2提供了便捷的方式来处理文件下载,而Apache POI使我们能够在Java中动态生成Excel文件,这两者结合为Web应用提供了强大的文件操作能力。在实际开发中,你需要根据具体的需求进行适当的调整和优化,...

    struts1 poi Excel批量导入支持xls和xlsx-源码java

    总之,这个源码项目展示了如何结合Struts1的MVC架构和Apache POI的强大功能,实现对Excel文件的高效批量导入,同时支持两种主要的Excel文件格式。通过学习和理解这个项目,开发者可以提升在Web应用中处理Excel数据的...

    struts2+poi实现导出Excel文件

    Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...

    [转]java struts2+jxl生成并导出Excel

    总的来说,结合Struts2和JXL,开发者可以方便地在Java web应用中实现Excel文件的生成与导出功能,提供给用户高效的数据导出体验。通过深入理解和实践,可以进一步定制化Excel的样式和内容,满足各种业务需求。

    struts2文件上传下载

    Struts2是一个流行的Java web框架,它为开发者提供了构建MVC(模型-视图-控制器)应用程序的强大工具。在这个特定的项目中,我们关注的是"struts2文件上传下载"的功能,这涉及到用户通过Web界面上传文件到服务器,...

    Struts2+Excel导出Demo,测试可用带JAR包

    在导出Excel的场景中,Action通常负责获取数据、创建Excel工作簿并将其转换为流,最后响应到客户端。 2. **JAR包**: 提供了导出Excel功能的库,如JXL。JXL是一个开源的Java库,专门用于读写Excel文件。在这个Demo中...

    Struts2 poi动态导入导出Excel源码示例

    例如,你可以定义一个`importExcel`方法来接收上传的Excel文件,以及一个`exportExcel`方法用于生成并下载Excel文件。 2. **上传文件**: Struts2支持文件上传,你需要在struts.xml配置文件中启用这个特性,并在...

    Struts2 Excel导入导出数据

    本教程将深入探讨如何利用Struts2实现从Oracle数据库导出数据到Excel,以及如何将Excel文件中的数据导入到Oracle。 首先,我们需要了解Oracle数据库的基础知识。Oracle是世界上最广泛使用的商业关系型数据库管理...

    struts2实现文件下载实例源代码

    在Struts2中实现文件下载的功能,可以帮助用户从服务器获取并保存文件到本地计算机,例如这里的"1.xls"文件。下面我们将深入探讨如何在Struts2框架下实现文件下载的实例。 首先,我们需要在项目的Web应用目录结构中...

    java代码生成excel表并下载

    总的来说,Java通过Apache POI库提供了一种强大而灵活的方式来生成Excel文件,结合Web框架,可以方便地实现文件下载功能,满足各种业务需求。在开发过程中,确保对性能进行优化,避免内存溢出,同时关注代码的可读性...

    struts2中利用poi导出excel

    为了将生成的Excel文件发送给用户下载,我们需要在Struts2的配置文件(struts.xml)中定义一个Result类型,例如`stream`,然后在Action类中设置响应头信息,并将工作簿写入到OutputStream中。 ```xml ...

    struts2+poi实现excel文件的导出

    Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...

    Struts2+Excel导入功能 完整美运行有JAR包

    在Struts2中实现Excel导入功能,可以让用户上传Excel文件,然后在服务器端进行数据处理,例如存储到数据库或者进行数据分析。 在描述中提到的“完整美运行有JAR包”,意味着这个压缩包可能包含了所有必要的库文件,...

    struts2+poi实现excel表格导出

    Struts2和Apache POI是Java开发中两个重要的工具,它们在处理Web应用程序中的数据导出,特别是Excel表格导出方面发挥着重要作用。Struts2是一个基于MVC设计模式的Web应用框架,它极大地简化了Java Web开发。而Apache...

    extjs3.2+struts2实现多文件上传excel并插入到数据库

    开发者需要理解ExtJS的组件使用、Struts2的文件上传处理、Java对Excel文件的操作以及数据库的批量插入技巧,才能成功完成这样的功能。而提供的Book1.xls文件可能是示例数据,用于测试上传和导入功能。

    struts2处理Excel生成txt文件

    本示例涉及的是从Excel文件中读取数据,并将其转换成TXT文件的过程。这个过程通常用于数据迁移、数据分析或者格式转换等场景。以下是对这个主题的详细阐述: 1. **读取Excel文件**: 在Java开发中,我们可以使用...

Global site tag (gtag.js) - Google Analytics