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.setC