文档章节

Struts2+ExtJS+poi导出excel

风灬云
 风灬云
发布于 2015/04/22 20:39
字数 647
阅读 251
收藏 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

没有更多内容

加载失败,请刷新页面

加载更多

企业级 SpringBoot教程(三)SpringBoot用JdbcTemplates访问Mysql

准备工作 jdk 1.8 maven 3.0 idea mysql 初始化mysql: -- create table `account`DROP TABLE `account` IF EXISTSCREATE TABLE `account` ( `id` int(11) NOT NULL AUTO_INCREMENT,......

itcloud
23分钟前
0
0
事务的作用

1. 什么是事务,为什么使用事务? 一、概念: 1.数据库事务: 数据库事务通常指对数据库进行读或写的一个操作序列。 它的存在包含有以下两个目的: 1、为数据库操作提供了一个从失败中恢复到正常...

gaomq
24分钟前
0
0
Web工程师以太坊入门

我经常构建使用以太坊的Web应用程序,我理所当然地认为每天都使用的是神奇的工具集。我们的生态系统正在迅速发展,我认为很多新人都感到不知所措。以太坊是一项了不起的技术,但它也是新生的...

geek12345
26分钟前
0
0
新蠕虫出现:以Linux和Windows为目标

正如Unit 42研究团队所详述的那样,名为Xbash的新恶意软件系列与Iron Group有关,Iron Group是一个以前知道可以执行勒索软件攻击的威胁行为者,显然已经转向更复杂的攻击媒介。 据观察,Xba...

linux-tao
29分钟前
0
0
Mask 动画

前言:很多动效都是多种动画的组合,有时候你可能只是需要其中某个动画,但面对庞杂的代码库或是教程,你可能比较困惑,本系列将复杂动效中不常见的动画效果拆解出来便于学习,授人以鱼不如授...

walking_yxf
30分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部