Struts2+ExtJS+poi导出excel

2015-04-22  来源:本站原创  分类:Java开发  人气:12 

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

相关文章
  • Struts2+ExtJS+poi导出excel 2015-04-22

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

  • Java POI导出EXCEL经典实现 Java导出Excel弹出下载框 2014-04-17

    在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

  • POI导出EXCEL经典实现 2014-07-29

    在web开发中,有一个经典的功能,就是数据的导入导出.特别是数据的导出,在生产管理或者财务系统中用的非常普遍,因为这些系统经常要做一些报表打印的工作.而数据导出的格式一般是EXCEL或者PDF,我这里就用两篇文章分别给大家介绍下.(注意,我们这里说的数据导出可不是数据库中的数据导出!么误会啦^_^) 呵呵,首先我们来导出EXCEL格式的文件吧.现在主流的操作Excel文件的开源工具有很多,用得比较多的就是Apache的POI及JExcelAPI.这里我们用Apache POI!我们先去Apach

  • SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二) 2014-11-21

    SpringMVC+Hibernate +MySql+ EasyUI实现CRUD(一) 大概的截图.很简单的小功能 注:使用的是MyEclipse 10.0 javaee 6.0 tomcat 6.0 导出指定列名.使用VO接受参数. SpringMVC+Hibernate +MySql+ EasyUI实现POI导出Excel(二) 和 批量删除数据 小功能的实现 1.datagrid新加的导出按钮代码 /*导出excel 按钮*/ toolbar:[{ id:'btnsave', text:'

  • POI 导出Excel工作表 2013-04-07

    第一步: 在MyEclipse新建项目个然后把所需的Struts2和POI的JAR包文件拷入lib文件夹中 .如下图 第二步: 配置好如下图的结构 注意struts.xml文件的配置 第三步: 建立如下图结构的类: 第四步: 先不忙写代码,在这里还要将web.xml文件配置好如下图 第五步: 开始那几个类的代码了: 从上往下 类的代码为: 第一个类:ExcelAction类 package com.hb.sxdl.action; import java.util.ArrayList; impor

  • struts2 使用注解 导出excel 2014-09-24

    做项目中需要用到导出excel的功能,记录一下. 1.使用jxl导出. 这个是从网上找的.这个不需要params inputName参数. [java] view plaincopy @Action (value = "vsealFileDepts.export1", results = { @Result (name = "success", type = "stream") }) // , params = { // "conten

  • POI导出excel的时候出现gc overhead limit 2011-10-24

    项目中需要一个数据导出excel功能,因为导出的文件需要是正式excel格式,包含多个sheet页,采用csv等方式无法满足需求,所以采用poi方式.考虑到poi方式会占用较多的内存,所以限制每次最多可以导出10000条数据,并且在开发环境自测的时候用可允许的最大的数据进行测试正常,通过jvisualvm观察内存使用情况发现old区内的最多的时候占用到200M左右,属于需求可接受范围.但是在测试环境测试的时候同样的数据会报异常,异常如下: 2011-01-05 10:32:03,783 [] W

  • 使用Apache的poi导出Excel 2014-09-10

    这两天在做一个项目,要用到导出excel的功能,因为以前没使用过这个功能,和我一起学习吧 首先你要下载最新的poi插件.在java中使用ssh框架的时候你就没有必要自己下载poi了,因为在你添加框架支持的时候spring已经为你添加了poi插件,有现成的干嘛不用呢. 下载完毕 在项目里面添加poi的支持jar包. 接下来就是进行开发 首先就是创建一个工作薄,在官方文档里面有标准的创建代码可以参考 在这个里面有两个东东不知道你发现了没有HSSF和XSSF.知道他们的区别吗??其实你google也是

  • 使用poi导出excel 2012-08-21

    文件:poi 2.5jar 因遇到导出中文乱码问题,而3.xjar又去掉了cell.setEncoding(),所以就换成了2.5jar 代码段: /** * * 功能描述: Excel操纵类,可以根据Excel模板来生成Excel对象<br> * Copyright: Copyright (c) 2005<br> */ public class ExportExcelUtil { private String title = ""; private Strin

  • POI -纯java代码实现导出excel表格 2014-08-19

    Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. HSSF - 提供读写Microsoft Excel格式档案的功能. XSSF - 提供读写Microsoft Excel OOXML格式档案的功能. HWPF - 提供读写Microsoft Word格式档案的功能. HSLF - 提供读写Microsoft PowerPoint格式档案的功能. HDGF - 提供读写Microsoft Visi

  • poi生成excel文件名乱码 2011-01-25

    我用POI导出excel报表,内容没有乱码,文件名却是乱码,系统编码是utf8,不知道这个文件名到底怎么弄才能正常显示?希望大虾不吝赐教,O(∩_∩)O谢谢

  • POI导出大量数据的简单解决方案(附源码) 2014-12-02

    说明:我的电脑 2.0CPU 2G内存 能够十秒钟导出 20W 条数据 ,12.8M的excel内容压缩后2.68M 我们知道在POI导出Excel时,数据量大了,很容易导致内存溢出.由于Excel 一个sheet允许的最大行数是65536这时我们想到分sheet进行导出:但是这种情况也不能解决内存溢出的问题.毕竟数据还是一次性在内存中进行保存的.这时我们想是不是可以导出多个excel呢?下面我就尝试着按照导出多个excel 首先:我们要确定数据量有多大,然后确定一个excel导出多少条数据,这

  • 动态导出excel文件实现草稿 2015-04-20

    /** * */ package com.zlp.servlet; import java.io.BufferedInputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; impo

  • struts2导出Excel文件 2012-07-19

    这里说下struts2导出Excel文件的列子. 列子比较简单.下面是我们导出Excel需要的jar包. struts2需要jar包:commons-logging.jar.freemarker-2.3.8.jar.ognl-2.6.11.jar.struts2-core-2.0.11.1.jar.xwork-2.0.4.jar excel导出:jxl.jar 下面为配置web.xml的内容: ..... <filter> <filter-name>struts2</filt

  • java POI实现excel实现表格导出 2014-04-15

    1.首先下载到 poi-3.6-20091214.jar的包 2.新建一个java类:Student.java: import java.util.Date; public class Student { private int id; private String name; private int age; private Date birth; public Student() { } public Student(int id, String name, int age, Date bi

  • echarts图表导出excel示例 2014-08-01

    这篇文章主要介绍了echarts图表导出excel示例,需要的朋友可以参考下 根据传入的参数生成相应的图形 loadChart : function(data,item){ var that = this; require(['echarts', 'echarts/chart/bar', 'echarts/chart/line', 'echarts/chart/pie'], function(ec) { that.body.setHeight(800); var myChart = ec.ini

  • 实战篇-通用的页面列表导出Excel控件 2012-03-09

    首先,先上下图片,好理解一下今天要讲内容: 第一张图: 第二张图: 说明: 在很多系统中,或者是一些网站的后台,包括秋色园的后台,通过都会有一些相同的工具栏目,比如上面的" 导出 "按钮,由于分布在系统大量的列表中, 因此,如何以最简洁快速的方式实现这种功能,节省开发时间,就是今天以下要介绍的内容了. 接着我们再看一下点击"导出"按钮时出现的导出功能: 打开导出的Excel: 说明: 从以上四张图片中,所要说明的问题是: "导出"功能在N个界面中

  • 导出excel(jxl) 2014-05-04

    service代码: /** * 导出员工信息 */ @Override public InputStream exportEmployeeExcel(List<?> list) { if(list==null){ throw new SystemException("list is null in exportEmployeeExcel method,it mustn't be null."); } ByteArrayOutputStream out = new Byte

  • goalng导出excel(csv格式) 2014-07-20

    最近项目中有个小需求,需要将查询结果导出到excel.之间前java比较容易,使用POI很容易就能实现,查了下golang的文档,发现golang下边并没有导出excel的包,但是却有一个encoding/csv的包,看了下发现可以导出csv文件,大家都知道csv文件其实就是文本格式的excel文件,可以直接通过excel打开或是导入excel. 看起来挺好的,问题如愿解决,但是事实证明对已一个还不成熟的语言或是库最好还是先测一下的好.兴冲冲的卸了测试例子,成功导出了一个text.csv文件,一

  • 导出Excel 2014-08-05

    由于最近需要在每张报表中添加"导出Excel"功能.虽然Spring提供了AbstractExcelView和AbstractJExcelView,但是我未直接拓展AbstractExcelView和AbstractJExcelView来实现功能,而是直接使用POI实现.系统所用的框架是Spring和iBatis框架的整合,首先, 为class=dumpExcel的<a>标签绑定了一个点击事件并结合实现Ajax技术. <%@ page language="j