`

struts2中用apache的jxl.jar导出Excel表格

阅读更多
一.在SSH中导入生Excel表格的依赖包Jxl.jar
二.在service层创建接口IExcelService
package com.crms.service;

import java.io.InputStream;
import java.util.List;
/**
*  struts2导出Excel
* @author Administrator
*
*/
public interface IExcelService {
  public InputStream getExcelInputStream(List<Object[]> objList);    
}

三.创建接口的实现类
package com.crms.service.impl;

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.ServletActionContext;
import jxl.Workbook;
import jxl.format.Alignment;
import jxl.format.UnderlineStyle;
import jxl.format.VerticalAlignment;
import jxl.write.Label;
import jxl.write.WritableCellFormat;
import jxl.write.WritableFont;
import jxl.write.WritableSheet;
import jxl.write.WritableWorkbook;
import jxl.write.WriteException;
import jxl.write.biff.RowsExceededException;
import com.crms.service.IExcelService;

/**
* 写入Excel文件
*
* 用來生成一个Excel文件  
*   
* @author Administrator
*
*/
public class ExcelServiceImpl implements IExcelService {
// 定义request ,response.
HttpServletResponse response = ServletActionContext.getResponse();
HttpServletRequest request = ServletActionContext.getRequest();
/**
* 将OutputStream转化为InputStream
*/
public InputStream getExcelInputStream(List<Object[]> dataList) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
putDataOnOutputStream(out,dataList);
return new ByteArrayInputStream(out.toByteArray());
}

/**
* 生成数据表(Excel)
*/
private void putDataOnOutputStream(OutputStream os,List<Object[]> dataList) {

//构造Workbook(工作薄)对象   
WritableWorkbook workbook=null;
//创建工作表
WritableSheet ws=null;
try {
//首先要使用Workbook类的工厂方法创建一个可写入的工作薄(Workbook)对象
workbook = Workbook.createWorkbook(os);
/*
             * 创建一个可写入的工作表 
             * Workbook的createSheet方法有两个参数,
             * 第一个是工作表的名称,第二个是工作表在工作薄中的位置
             * 生成名为"第一页"的工作表,参数0表示这是第一页
             */
ws= workbook.createSheet("offerUp", 0);
//创建列名
// 定义格式, 字体, 下划线, 斜体, 粗体, 颜色
WritableFont wf = new WritableFont(WritableFont.ARIAL, 10,
    WritableFont.BOLD, false, UnderlineStyle.NO_UNDERLINE,
jxl.format.Colour.BLACK);
// 创建格式化对象实例   
WritableCellFormat totalx2Format = new WritableCellFormat(wf);   
// 垂直居中   
totalx2Format.setVerticalAlignment(VerticalAlignment.CENTRE);   
// 水平居中   
totalx2Format.setAlignment(Alignment.CENTRE);
// 设置标题.ws.addCell(new jxl.write.Label(列(从0开始), 行(从1开始), 内容.));
ws.addCell(new Label(0, 0, "编号",totalx2Format));
ws.addCell(new Label(1, 0, "客户名称",totalx2Format));
ws.addCell(new Label(2, 0, "订单金额(元)",totalx2Format));
// 合并单元格,参数格式(开始列,开始行,结束列,结束行)
ws.mergeCells(0, 0, 0, 0);
ws.mergeCells(1, 0, 1, 0);
ws.mergeCells(2, 0, 2, 0);
// 设置单元格的宽度
ws.setColumnView(0, 10);
ws.setColumnView(1, 40);
ws.setColumnView(2, 20);


//添加数据
if (null!=workbook) {
          
//下面开始添加单元格数据   
            for(int i=0;i<dataList.size();i++){   
                for(int j=0;j<dataList.get(0).length;j++){   
                    //这里需要注意的是,在Excel中,第一个参数表示列,第二个表示行   
                    Label labelC = new Label(j, i+1,dataList.get(i)[j].toString(),totalx2Format);   
                    try {   
                        //将生成的单元格添加到工作表中   
                    ws.addCell(labelC);   
                    } catch (RowsExceededException e) {   
                        e.printStackTrace();   
                    } catch (WriteException e) {   
                        e.printStackTrace();   
                    }   
                }   
            }   
}
    //从内存中写入文件中  
workbook.write();   
               //关闭资源,释放内存   
workbook.close();   
} catch (Exception e) {
e.printStackTrace();
}
}
}
四.Action层将数据库的数据传给Excel,并返回结果
package com.crms.web.action;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import com.crms.biz.StatisticsBiz;
import com.crms.pojo.Customerinfo;
import com.crms.pojo.msms.Orderdetail;
import com.crms.pojo.msms.Orders;
import com.crms.service.IExcelService;
import com.crms.service.impl.ExcelServiceImpl;
/**
* struts2导出Excel
* @author Administrator
*
*/

public class ExcelAction {
private StatisticsBiz statisticsBiz;
private List<Orderdetail> orderdetailList;
private Customerinfo customerinfo;
private ExcelServiceImpl excelServiceImpl=new ExcelServiceImpl();

public StatisticsBiz getStatisticsBiz() {
return statisticsBiz;
}

public void setStatisticsBiz(StatisticsBiz statisticsBiz) {
this.statisticsBiz = statisticsBiz;
}

public List<Orderdetail> getOrderdetailList() {
return orderdetailList;
}

public void setOrderdetailList(List<Orderdetail> orderdetailList) {
this.orderdetailList = orderdetailList;
}

public IExcelService getExcelService() {
return excelService;
} public void setExcelService(IExcelService excelService) {
this.excelService = excelService;
}

public ExcelServiceImpl getExcelServiceImpl() {
return excelServiceImpl;
}

public void setExcelServiceImpl(ExcelServiceImpl excelServiceImpl) {
this.excelServiceImpl = excelServiceImpl;
}

//+++++++++++++++++++++++++++
private InputStream excelStream;
private IExcelService excelService = new ExcelServiceImpl();

public InputStream getExcelStream() {
return excelStream;
}

public void setExcelStream(InputStream excelStream) {
this.excelStream = excelStream;
}

public String execute() {
String customerId = null;
List<Object[]> objectList = new ArrayList<Object[]>();
try {
orderdetailList = statisticsBiz.getOrderdetailService().queryAll();
Integer i = 0;
for (Orderdetail orderdetail_2 : orderdetailList) {
customerId = ((Orders) (orderdetail_2.getOrders())).getCustomer_id();
customerinfo = statisticsBiz.getCustomerinfoService().queryById(customerId);
((Orders) (orderdetailList.get(i).getOrders())).setCustomer_id(customerinfo.getCustomerName());
Object [] object={i+1,customerinfo.getCustomerName(),orderdetail_2.getSub_price()};
objectList.add(object);
i++;
}

} catch (Exception e) {
e.printStackTrace();
}
excelStream = excelService.getExcelInputStream(objectList);
return "excel";
}
}
五.Struts2配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<!--  struts2导出Excel -->
<struts>
<package name="excel" namespace="/export2excel"  extends="struts-default">
<action name="excel" class="com.crms.web.action.ExcelAction">
<result name="excel_*" type="stream">
<param name="contentType">
application/vnd.ms-excel  
            </param>
<param name="inputName">excelStream</param>
<param name="contentDisposition">
filename="{1}.xls"  
            </param>
<param name="bufferSize">1024</param>
</result>
</action>  
</package>  
</struts>
  • jxl.jar (706.1 KB)
  • 下载次数: 47
2
6
分享到:
评论
1 楼 poincare 2011-03-15  
写的很不错,学习了

相关推荐

    使用jxl.jar在Android中操作Excel表格

    这里我们将深入探讨如何使用jxl.jar库在Android环境中操作Excel表格,特别是处理隐藏表的情况。 首先,jxl是一个Java库,它允许我们以编程方式读取和写入Microsoft Excel文件。由于Android系统基于Java,因此可以...

    jxl.jar_java操作excel表格的jar包

    Java操作Excel表格是Java开发中常见的一项任务,特别是在数据处理、报表生成以及数据导入导出等场景。`jxl.jar` 是一个非常流行的Java库,它允许开发者在Java程序中方便地读取和写入Excel文件。这个库是Java Excel ...

    jxl.jar包最新jar包亲测可用

    《使用jxl.jar包在Java中操作Excel文件的详尽指南》 在Java开发中,与Excel文件交互是一项常见的任务,比如数据导入、导出、分析等。jxl.jar库提供了一个强大的解决方案,使得开发者无需依赖Windows环境即可处理...

    使用jxl.jar 对Excel 进行读写

    总之,`jxl.jar`是一个非常实用的工具,它使Java开发者能够方便地处理Excel文件,无论是简单的数据导入导出还是复杂的报表生成,都能轻松应对。记得在使用时处理好异常,确保文件读写的安全性。

    jxl.jar完整包

    本文将深入探讨如何使用jxl.jar这个完整的Java库来创建Excel文件,并设置字体样式、表格等格式。 首先,我们要理解jxl库的核心功能。jxl库支持读取和写入Excel 97-2003格式的文件(.xls),提供了一个API,允许...

    jxl.jar excel操作包

    《jxl.jar:Excel操作利器》 在信息技术领域,数据处理和分析是不可或缺的一部分,而Excel作为最常用的数据管理工具,其重要性不言而喻。对于开发者来说,能够高效地与Excel文件交互是提高工作效率的关键。这时,...

    jxl.jar使用文档

    jxl.jar 通过java操作excel表格的工具类库 支持Excel 95-2000的所有版本 生成Excel 2000标准格式 支持字体、数字、日期操作 能够修饰单元格属性 支持图像和图表 应该说以上功能已经能够大致满足我们的需要。...

    jxl.jar----java导出数据到excel

    jxl.jar库为Java开发者提供了一个方便的接口来操作Excel电子表格。这个库不仅支持读取Excel文件,还能创建新的工作簿,修改现有数据,以及将Java对象的数据导出到Excel格式。 jxl库的核心功能包括: 1. **创建新...

    jxl.jar,excel数据工具类导出jar

    总的来说,jxl.jar是Java开发环境下处理Excel数据的得力工具,无论是在数据分析、报表生成还是数据导入导出场景下,都能发挥重要作用。通过熟练掌握jxl.jar的使用,开发者可以大大提高工作效率,减少手动操作的繁琐...

    Java操作Excel(jxl.jar)

    本篇文章将深入探讨如何使用jxl.jar库来实现Java操作Excel。 首先,jxl是一个广泛使用的Java库,它允许开发者读写Microsoft Excel文件。它的主要优势在于简单易用且功能丰富,支持多种Excel格式,包括老版本的.BIFF...

    jxl.jar 下载excel电子表格(2)

    标题中的"jxl.jar"是一个Java库,专门用于读取和写入Microsoft Excel电子表格文件。这个库在Java开发中非常有用,特别是当你需要在应用程序中处理Excel数据时,而无需依赖于Microsoft Office套件。它支持多种Excel...

    jxl.jar包(java导入导出Excel文件)

    - jxl.jar库适用于处理早期版本的Excel文件(.xls格式,Excel 97-2007),对于.xlsx格式的现代Excel文件,推荐使用Apache POI或其他兼容库。 - 调整Excel文件格式时,确保与Excel实际的格式设置保持一致,否则可能会...

    jxl.jar包(2.6).zip

    jxl.jar是通过java操作excel表格的工具类库,开发过程中经常需要用到数据的导入导出功能,之前用的是POI,这次使用JXL,JXL相对于POI来说要轻量简洁许多,在数据量不大的情况下还是非常实用的。

    jxl.jar和例子

    jxl.jar是Java Excel API(JExcelApi)的一个版本,它是一个开源库,允许Java开发者读取、写入和修改Microsoft Excel文件。 描述中提到"本压缩文件包含了jxl.jar和使用例子",意味着我们不仅可以获取到处理Excel的...

    jxl.jar 下载excel电子表格(1)

    这篇博客“jxl.jar 下载excel电子表格(1)”可能是介绍如何使用这个库来处理Excel文件的入门教程。 在描述中提到的“NULL”意味着没有提供具体的细节,但通常这样的描述可能引导读者去博文链接获取更多信息。根据...

    java将数据导出到Excel表格(java源程序+jxl.jar包)

    在许多场景下,我们需要将数据导出到Excel表格以便于分析、报告或者共享。本教程将介绍如何使用Java来实现这一功能,主要依赖于jxl库,这是一个用于读写Excel文件的开源Java库。 首先,你需要获取jxl.jar包。这个库...

    jxl.jar(JAVA对EXCEL表格的操作)

    **标题详解:**"jxl.jar (JAVA对EXCEL表格的操作)" `jxl.jar` 是一个Java类库,主要用于处理Microsoft Excel文件。这个库使得Java开发者能够在程序中读取、写入、编辑以及创建Excel电子表格。它提供了丰富的API接口...

    excel 导出用的jxl.jar

    《使用jxl.jar进行Excel数据导出详解》 在IT领域,尤其是在数据分析、报表生成以及数据交换等场景中,Excel文件常常被用作数据存储和展示的工具。Java程序员经常需要处理与Excel文件的交互,比如导出数据到Excel。...

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

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

Global site tag (gtag.js) - Google Analytics