`
chinrui
  • 浏览: 97345 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

struts2与jxl整合导出Excel文件

 
阅读更多

struts2与jxl整合导出Excel文件

1、导入相应的Jar包

jxl.jar

2、下载请求

<a href="Complain_exportExcel.action" >导出为Excel文件</a>
<a href="Complain_exportExcelPage.action?pageNumber=${ page.pageNumber }" >导出当前页为Excel文件</a>

 3、struts.xml的配置

<action name="Complain_exportExcel" class="cn.hpu.action.ComplainAction" method="exportExcel">
	<result></result>
</action>

<action name="Complain_exportExcelPage" class="cn.hpu.action.ComplainAction" method="exportExcelPage">
	<result></result>
</action>

 4、Action类的处理

package cn.hpu.action;

import java.io.IOException;
import java.io.OutputStream;
import java.util.List;

import javax.servlet.http.HttpServletResponse;

import jxl.Workbook;
import jxl.write.DateFormat;
import jxl.write.DateTime;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;

import cn.hpu.po.Complain;
import cn.hpu.service.ComplainService;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class ComplainAction extends ActionSupport {

	private ComplainService complainService;
	
	private List<Complain> complains;
	
	// 分页
	private Integer pageSize;
	private Integer pageNumber;
	
	/**导出Excel文件
	 * @author qinrui
	 * @see cn.hpu.service.ComplainService complainService
	 * @param response
	 * @return java.lang.String
	 * @throws IOException 
	 */
	public void exportExcel() throws IOException {
		
		List<Complain> complains = complainService.loadComplains();
		
		HttpServletResponse response = ServletActionContext.getResponse();
		
		response.reset();
		// 禁止数据缓存
		response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
        response.addHeader("Content-Disposition","attachment;filename=Complain.xls");
		
        OutputStream os = response.getOutputStream();
		printExcels(complains, os);
		
		os.flush();
		os.close();
	}
	
	/**将当前页输出为Excel
	 * @author qinrui
	 * @see cn.hpu.service.ComplainService complainService
	 * @throws IOException
	 */
	public void exportExcelPage() throws IOException {
		
		Integer sessionPageSize = (Integer) ActionContext.getContext().getSession().get("pageSize");
		
		if(sessionPageSize != null) {
			pageSize = sessionPageSize;
		} else {
			pageSize = 10;
		}
		
		complains = complainService.loadComplains((pageNumber - 1) * pageSize, pageSize);
		
		HttpServletResponse response = ServletActionContext.getResponse();
		
		response.reset();
		// 禁止数据缓存
		response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        response.setContentType("application/vnd.ms-excel;charset=UTF-8");
        response.addHeader("Content-Disposition","attachment;filename=Complain.xls");
		
        OutputStream os = response.getOutputStream();
		printExcels(complains, os);
		
		os.flush();
		os.close();
	}
	
	/**以二进制形式下载Excel
	 * @author qinrui
	 * @param complains
	 * @param os
	 */
	public void printExcels(List<Complain> complains , OutputStream os) {
		
		try {
			// 创建新的Excel工作簿
			WritableWorkbook book  =  Workbook.createWorkbook(os);
			 // 生成名为"投诉信息表"的工作表,参数0表示这是第一页
			WritableSheet sheet  =  book.createSheet("投诉信息表" , 0);
			 //  在Label对象的构造子中指名单元格位置是第一列第一行(0,0)
			
			// 更改日期格式
			DateFormat df = new DateFormat("yyyy-MM-dd");
			WritableCellFormat wcf = new WritableCellFormat(df);
			
			String[] labels = new String[]{"投诉主题",
					"投诉客户","投诉人","受理人","投诉日期","处理状态",
					"客户满意度","投诉内容","投诉处理办法","投诉备注信息"};
			
			// 设定单元格信息
			for(int i = 0; i < labels.length; i++) {
				Label label = new Label(i , 0, labels[i]);
				sheet.addCell(label);
			}
			
			for(int x = 0; x < complains.size(); x++) {
				Label theme = new Label(0, x + 1, complains.get(x).getTheme());
				Label customer = new Label(1, x + 1, complains.get(x).getCustomerInfo().getName());
				Label complainant = new Label(2, x + 1, complains.get(x).getComplainant());
				Label dealer = new Label(3, x + 1, complains.get(x).getUser().getName());
				DateTime time = new DateTime(4, x + 1, complains.get(x).getTime() , wcf);
				Label state = new Label(5 , x + 1, complains.get(x).getState().getName());
				Label satisfication = new Label(6 , x + 1, complains.get(x).getSatisfication().getName());
				Label content = new Label(7, x + 1, complains.get(x).getContent());
				Label method = new Label(8, x + 1, complains.get(x).getMethod());
				Label remark = new Label(9, x + 1, complains.get(x).getRemark());
				
				sheet.addCell(theme);
				sheet.addCell(customer);
				sheet.addCell(complainant);
				sheet.addCell(dealer);
				sheet.addCell(time);
				sheet.addCell(state);
				sheet.addCell(satisfication);
				sheet.addCell(content);
				sheet.addCell(method);
				sheet.addCell(remark);
			}

			// 写入数据并关闭文件
			book.write();
			book.close();
		} catch (RowsExceededException e) {
			e.printStackTrace();
		} catch (WriteException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public ComplainService getComplainService() {
		return complainService;
	}

	public void setComplainService(ComplainService complainService) {
		this.complainService = complainService;
	}

	public List<Complain> getComplains() {
		return complains;
	}

	public void setComplains(List<Complain> complains) {
		this.complains = complains;
	}

	public Integer getPageSize() {
		return pageSize;
	}

	public void setPageSize(Integer pageSize) {
		this.pageSize = pageSize;
	}

	public Integer getPageNumber() {
		return pageNumber;
	}

	public void setPageNumber(Integer pageNumber) {
		this.pageNumber = pageNumber;
	}

}

 

分享到:
评论

相关推荐

    struts2整合apache的jxl导入导出excel表格

    Struts2 框架与 Apache 的 JXL 库整合,可以方便地实现在 Java Web 应用中导入和导出 Excel 表格的功能。Apache JXL 是一个强大的 Java 库,专门用于读写 Microsoft Excel 文件,使得开发者无需依赖 Office API 就能...

    S2SH+jxl.jar实现导出Excel文档

    本文将详细介绍如何利用Struts2、Hibernate(简称S2H)结合jxl.jar库来实现在Web应用中导出Excel文件的功能。 #### 二、环境搭建与准备工作 1. **项目搭建**: - 创建一个新的Struts2项目。 - 配置好Struts2和...

    ssh整合web导出excel案例

    在本文中,我们将探讨如何在SSH(Spring、Struts2、Hibernate)框架下整合实现Web应用导出Excel文件的功能。SSH是一个广泛使用的Java Web开发框架,它提供了强大的数据持久层、MVC架构以及依赖注入等功能。在这个...

    ssh整合web导出excel案例.docx

    主页展示:提供导出当前页数据到Excel文件和导出所有数据到Excel文件的选项。 b. 详细信息展示:展示子地址列表,允许用户导出当前页的详细信息到Excel。 3. **SSH整合配置** - **Spring配置**:配置数据源、...

    jxl报表 代码应用

    在前端,jQuery可能用于优化用户交互,例如动态加载报表或提供表单验证,确保用户输入的数据可以正确导入到Excel文件中。 项目可能包含以下关键步骤: 1. **数据准备**:使用Hibernate查询数据库,获取需要展示在...

    java导出Excel(s2sh)

    通过以上详细说明,可以看出在 S2SH 项目中实现 Excel 导出涉及到了多个层面的技术要点,包括但不限于框架整合、HTTP 协议理解、Apache POI 库的使用以及对中文字符的处理等。开发者可以根据项目的具体需求灵活调整...

    struts2.0+hibernate3.1+spring2.0实例源码里的jar2

    这些库的组合表明这个示例项目不仅包含了一个基本的Struts2、Hibernate和Spring的集成,还可能涉及到报表生成(通过JasperReports)、Excel文件处理(POI和JExcelAPI)、以及可能的MySQL数据库操作。开发者可以参考...

    Struts2.1.8,Spring2.5,Hibernate3所需Jar包 S2SH SSH

    `jxl.jar`是Java Excel API,允许程序读写Excel文件,如果项目中有导出数据至Excel的需求,这个库会非常有用。 `dwr.jar`是Direct Web Remoting的实现,它允许在JavaScript和服务器端之间进行方法调用,实现富...

    SSH整合需要的所有JAR包(1部分).

    这个压缩包文件包含了在进行SSH整合时可能需要的一些关键JAR库,以确保项目运行过程中不会出现类冲突或其他异常,特别是针对Struts中的Action执行问题。 1. **Hibernate3.jar**:这是Hibernate的核心库,提供了对象...

    SSH整合所需的JAR包-2

    `jxl.jar`是另一个处理Excel的库,它提供了读写Excel文件的功能。与POI相比,jxl可能更简单易用,但在功能和性能上可能稍逊一筹。 `jboss-jmx.jar`和`jboss-common.jar`是针对JBoss应用服务器的JMX(Java ...

    spring整合hibernate的所需jar包

    8. **jxl.jar**:与POI类似,jxl库也是处理Excel文件的,但版本较旧,可能已不再维护,建议使用POI。 9. **c3p0-0.9.1.2.jar**:C3P0是一个数据库连接池,它提高了数据库连接的效率,通过复用已打开的数据库连接,...

    SSH框架整合架包

    - `jxl.jar`:JExcelAPI库,用于读写Excel文件,方便数据导入导出。 这些组件组合在一起,能够帮助开发者快速构建一个具备持久层(Hibernate)、业务逻辑层(Spring)和视图层(Struts2)的完整Java Web应用。通过...

    业余框架整合-SSHD-(1)-整体概述(2011-12-03更新)

    6. **jxl.jar**:这是 JExcelApi,一个用于读写 Microsoft Excel 文件的 Java 库,可能用于数据导入导出。 7. **log4j-1.2.16.jar**:这是一个广泛使用的日志记录框架,用于收集和管理应用程序的日志信息。 8. **...

    ext -jar ext -jar第二部分

    8. **jxl-2.6.jar**: JExcelApi(JXL)是一个Java库,用于读写Microsoft Excel文件,提供了一个简单的方法来处理Excel数据。 9. **batik-svg-dom.jar**: Batik是Apache的一个SVG(Scalable Vector Graphics)工具包...

    小项目第五部分

    两个pss0328的zip文件可能包含了一些项目的源码或者更新,而jxl.zip可能是JExcelApi的压缩包,这是一个用来读写Excel文件的Java库,可能在项目中用于数据导入导出。 最后,jquery-validation可能是jQuery的一个验证...

    web开发常用jar

    struts2整合spring所需要的包 xwork-2.0.7.jar xwork核心包 antlr-2.7.6.jar 一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 ...

    java开发常用jar包

    struts2整合spring所需要的包 xwork-2.0.7.jar xwork核心包 antlr-2.7.6.jar 一个语言转换工具, Hibernate利用它实现 HQL 到 SQL 的转换模板相关操作需要包 javassist-3.9.0.GA.jar 代码生成工具 Hibernate用...

    大数据功能模块概要设计_V1.1.pdf

    Excel和PDF的导入导出可能涉及jxl、poi、pdfbox或iText库。XML文件解析可以借助dom4j和Digester。WebServices发布则根据开发框架如Spring,选择Cxf。 3. **数据处理与管理**:数据采集管理涉及数据的获取和预处理,...

Global site tag (gtag.js) - Google Analytics