文档章节

Struts2+ExtJS+poi导出excel

风灬云
 风灬云
发布于 2015/04/22 20:39
字数 647
阅读 252
收藏 9

首先生成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.HSSFRow;

import org.apache.poi.hssf.usermodel.HSSFSheet;

import org.apache.poi.hssf.usermodel.HSSFWorkbook;

import org.apache.struts2.ServletActionContext;

import com.acbee.model.User;


//生成Excel并输出的类

public class CreateExcel {

@SuppressWarnings("deprecation")

public String Create()

{

    String filename="student";

    // 第一步,创建一个webbook,对应一个Excel文件  

        HSSFWorkbook wb = new HSSFWorkbook();  


        // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet  

        HSSFSheet sheet = wb.createSheet("学生表一");  


        // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short  

        HSSFRow row = sheet.createRow((int) 0);  


        // 第四步,创建单元格,并设置值表头 设置表头居中  

        HSSFCellStyle style = wb.createCellStyle();  

        style.setAlignment(HSSFCellStyle.ALIGN_CENTER); // 创建一个居中格式  

        HSSFCell cell = row.createCell((short) 0);  

        cell.setCellValue("学号");  

        cell.setCellStyle(style);  

        cell = row.createCell((short) 1);  

        cell.setCellValue("姓名");  

        cell.setCellStyle(style);  

        cell = row.createCell((short) 2);  

        cell.setCellValue("年龄");  

        cell.setCellStyle(style);  

        cell = row.createCell((short) 3);  

        cell.setCellValue("生日");  

        cell.setCellStyle(style);  


        // 第五步,写入实体数据 实际应用中这些数据从数据库得到,  

        //List list = CreateSimpleExcelToDisk.getStudent();  

//        for (int i = 0; i < list.size(); i++)  

//        {  

//            row = sheet.createRow((int) i + 1);  

//            User user = (User) list.get(i);  

//            row.createCell((short) 0).setCellValue((double) user.getUser_pk());  

//            row.createCell((short) 1).setCellValue(user.getUser_name());  

//            row.createCell((short) 2).setCellValue(user.getUser_number());  

//            cell = row.createCell((short) 3);  

//            cell.setCellValue(new SimpleDateFormat("yyyy-mm-dd").format(user.getUser_birthday()));  

//        }  


        for (int i = 0; i < 3; i++)  

        {  

            row = sheet.createRow((int) i + 1);  

            //User user = (User) list.get(i);  

            row.createCell((short) 0).setCellValue(1);  

            row.createCell((short) 1).setCellValue(2);  

            row.createCell((short) 2).setCellValue(3);  

            row.createCell((short) 3).setCellValue(3);  

        }  


        // 第六步,将文件通过 HttpServletResponse输出

            /*

* 下面的可以不用编写,直接拷贝

*/

HttpServletResponse response = null;// 创建一个HttpServletResponse对象

OutputStream out = null;// 创建一个输出流对象

try {

System.out.println("io");

response = ServletActionContext.getResponse();// 初始化HttpServletResponse对象

out = response.getOutputStream();//

response.setHeader("Content-disposition", "attachment; filename=" + filename+".xls");

                        //filename是下载的xls的名

response.setContentType("application/msexcel;charset=UTF-8");// 设置类型

response.setHeader("Pragma", "No-cache");// 设置头

response.setHeader("Cache-Control", "no-cache");// 设置头

response.setDateHeader("Expires", 0);// 设置日期头

wb.write(out);

out.flush();

wb.write(out);

} catch (IOException e) {

e.printStackTrace();

} finally {

if (out != null) {

System.out.println("out is close");

//out.close();

}

}

return null;

}

}


在Action中调用生成excel 的方法

CreateExcel excel=new CreateExcel();

public String export()

{

System.out.println("导出");

url=excel.Create();

//return SUCCESS;

System.out.println(url);

return null;//此处必须是null否则报错

}


ExtJs中的调用代码

//导出按钮的事件

var export_excel=function(btn)

{    

        //Ext.ajax省略

        //调用export.action导出excel

        //此处必须这种写法,不然无法弹出保存excel的框

window.location="export.action";

}



struts.xml中的配置

<package name="extjs" extends="json-default" namespace="/">

    <action name="export" class="userAction" method="export">

    <result type="json">

    </result>

    </action>

</package>

或者

<package name="default" namespace="/" extends="struts-default">

    <action name="export"  class="userAction" method="export">  

            <result name="success" type="stream">    

            </result>  

    </action>  

</package>

经验证,上述两种方式都可以,主要是在ExtJS中调用action时注意写法,就可以成功导出excel


© 著作权归作者所有

共有 人打赏支持
风灬云
粉丝 18
博文 91
码字总数 30310
作品 1
西宁
技术主管
私信 提问
基于 poi 的 Excel 操作组件--Excel4J

Excel4J 是基于 poi 的 excel 操作组件,大大减少代码量,提高开发效率。 基于注解 @ExcelField(title = "学号", order = 1)private Long id;@ExcelField(title = "姓名", order = 2)privat...

Crab2Died
2017/06/16
3.8K
8
Crab2Died/Excel4J

Excel4J v2.x 一. v2.x新特性 Excel读取支持部分类型转换了(如转为Integer,Long,Date(部分)等) v2.0.0之前只能全部内容转为String Excel支持非注解读取Excel内容了,内容存于对象内 现在支持导...

Crab2Died
2017/06/11
0
0
Java报表工具FineReport导出EXCEL的四种API

在实际的应用中会经常需要将数据导出成excel,导出的方式除原样导出还有分页导出、分页分sheet导出和大数据量导出。对于excel 2003版,由于限制了每个sheet的最大行数和列数,大数据量导出时...

九月你好123
2016/03/15
1K
4
Excel 快捷导出导入工具--exportExcel

exportExcel 让 excel 导出导入更简单,告别繁琐的 excel 导出,实现自定义导出,模板导出,基于注解导出简单方便。 1、 新建excel导出。 Excel excel = new Excel(); //新建excelExcelSheet...

Jeff_Regan
2017/08/15
1K
5
JeeSite|Excel导入导出

在各种管理系统中,数据的导入导出是经常用到的功能,通常导入导出以Excel、CSV格式居多。JeeSite提供了很好的Excel的导入导出功能,隐藏了底层的很多实现,通过简单的套路式步骤即可完成数据...

秋风似刀
2017/11/15
0
0

没有更多内容

加载失败,请刷新页面

加载更多

3分钟总结Mybatis别名

1.系统内置别名: 把类型全小写(resultType/paramType) 2.给某个类起别名 2.1 alias=”自定义” <typeAliases> <typeAlias type="com.bjsxt.pojo.People" alias="peo"/> </typeAli......

KingFightingAn
昨天
1
0
JAVA设计模式之模板方法模式和建造者模式

一、前期回顾 上一篇《Java 设计模式之工厂方法模式与抽象工厂模式》介绍了三种工厂模式,分别是工厂方法模式,简单工厂方法模式,抽象工厂模式,文中详细根据实际场景介绍了三种模式的定义,...

木木匠
昨天
7
0
C中的宏的使用(宏嵌套/宏展开/可变参数宏)

基本原则: 在展开当前宏函数时,如果形参有#或##则不进行宏参数的展开,否则先展开宏参数,再展开当前宏。 #是在定义两边加上双引号 #define _TOSTR(s) #sprintf(_TOSTR(test ABC))pr...

SamXIAO
昨天
4
0
SpringBoot 整合异步调用方法

1. 在 SpringBoot 主类上使用 @EnableAsync 注解,开启异步调用功能 package com.codingos.springbootdemo;import org.springframework.boot.SpringApplication;import org.springfra......

北漂的我
昨天
3
0
0015-如何使用Sentry管理Hive外部表权限

1.文档编写目的 本文档主要讲述如何使用Sentry对Hive外部表权限管理,并基于以下假设: 1.操作系统版本:RedHat6.5 2.CM版本:CM 5.11.1 3.集群已启用Kerberos和Sentry 4.采用具有sudo权限的...

Hadoop实操
昨天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部