在线实时生成Excel文件流供下载

本文介绍了一种在线实时生成Excel文件并提供下载的方法,避免了服务器端文件存储,提高了性能。利用Apache POI库配合ServletOutputStream实现高效文件流传输。

在线实时生成Excel文件流供下载 (转)

  我做过的一个项目,需要实现在线实时生成 Excel文件供客户端下载的需求,最初考虑的是先在服务器端生成真实的文件,然后在客户端下载该文件。后来发现这样做不但性能不够好、速度较慢,而且还要占用服务器空间。所以采取了在服务器端生成文件输出流(ServletOutputStream),通过HttpServletResponse对象设置相应的响应头,然后将此输出流传往客户端的方法实现。在实现过程中,用到了Apache组织的Jakarta开源组件POI,读者朋友可到其官方网站查阅相关资料及下载。现将整个实现过程介绍如下:

         一、首先,根据Excel表的特点,我编写了一个Excel表模型类ExcelModel,代码如下:

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客package com.qnjian.myprj.excel;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.ArrayList;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客/** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Title: ExcelModel</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Description: Excel表的操作模型</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Copyright: Copyright (c) 2005-10-20</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Company: *** </p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * @author zzj

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * @version 1.0

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客public class ExcelModel 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 文件路径,这里是包含文件名的路径

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      protected String path;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 工作表名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      protected String sheetName;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 表内数据,保存在二维的ArrayList对象中

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      protected ArrayList data;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 数据表的标题内容

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      protected ArrayList header;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 用于设置列宽的整型数组

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 这个方法在程序中暂未用到

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 适用于固定列数的表格

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      protected int[] width;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public ExcelModel() 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            path="report.xls";

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public ExcelModel(String path) 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客           this.path=path;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public void setPath(String path)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客           this.path=path;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public String getPath()在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            return this.path;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public void setSheetName(String sheetName)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客          this.sheetName=sheetName;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public String getSheetName()在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客          return this.sheetName;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public void setData(ArrayList data)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            this.data=data;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public ArrayList getData()在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            return this.data;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public void setHeader(ArrayList header)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            this.header=header;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public ArrayList getHeader()在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            return this.header;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public void setWidth(int[] width)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            this.width=width;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      public int[] getWidth()在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            return this.width;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客}

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

      

  二、编写一个下载接口ExcelDownLoad,定义基本的方法:

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客package com.qnjian.myprj.excel;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.IOException;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.List;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import javax.servlet.http.HttpServletResponse;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import org.apache.struts.action.ActionForm;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客public interface ExcelDownLoad 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 初始化要生成的Excel的表模型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param list List 填充了 Excel表格数据的集合

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param form ActionForm及其子类

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param excel ExcelModel Excel表的对象模型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @see ExcelModel

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @throws Exception

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public ExcelModel createDownLoadExcel (List list, ActionForm form, 

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            ExcelModel excel)throws Exception;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 在已文件已存在的情况下,采用读取文件流的方式实现左键点击下载功能,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 本系统没有采取这个方法,而是直接将数据传往输出流,效率更高。

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param inPutFileName 读出的文件名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param outPutFileName 保存的文件名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param HttpServletResponse     

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @see HttpServletResponse

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @throws IOException

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public void downLoad(String inPutFileName, String outPutFileName,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            HttpServletResponse response) throws IOException ;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 在已文件不存在的情况下,采用生成输出流的方式实现左键点击下载功能。

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param outPutFileName 保存的文件名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param out ServletOutputStream对象    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param downExcel 填充了数据的ExcelModel

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param HttpServletResponse     

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @see HttpServletResponse

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @throws Exception

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public void downLoad(String outPutFileName, ExcelModel downExcel,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            HttpServletResponse response) throws Exception ;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客}

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

         三、编写一个实现了以上接口的公共基类BaseExcelDownLoad,并提供downLoad()方法的公共实现,代码如下:

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客/** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Title: BaseExcelDownLoad</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Description:Excel表下载操作基类,生成excel格式的文件流供下载 </p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Copyright: Copyright (c) 2005-10-27</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Company: *** </p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * @author zzj

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * @version 1.0

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客package com.qnjian.myprj.excel;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.FileInputStream;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.IOException;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.InputStream;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.OutputStream;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.List;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import javax.servlet.http.HttpServletResponse;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import org.apache.struts.action.ActionForm;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客public abstract class BaseExcelDownLoad implements ExcelDownLoad在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 初始化要生成的Excel的表模型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param list List 填充了 Excel表格数据的集合

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param form ActionForm及其子类

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param excel ExcelModel Excel表的对象模型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @see ExcelModel

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @throws Exception

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public abstract ExcelModel createDownLoadExcel (List list, ActionForm form, 

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            ExcelModel excel)throws Exception;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 在已文件已存在的情况下,采用读取文件流的方式实现左键点击下载功能,

借明星顾问:跟着偶像护肤 - uejbdn - uejbdn的博客     * 本系统没有采取这个方法,而是直接将数据传往输出流,效率更高。

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param inPutFileName 读出的文件名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param outPutFileName 保存的文件名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param HttpServletResponse     

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @see HttpServletResponse

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @throws IOException

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public void downLoad(String inPutFileName, String outPutFileName,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            HttpServletResponse response) throws IOException 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       //打开指定文件的流信息

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        InputStream is = new FileInputStream(inPutFileName);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //写出流信息

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         int data = -1;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         OutputStream outputstream = response.getOutputStream();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //清空输出流

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客           response.reset();             

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         //设置响应头和下载保存的文件名              

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         response.setHeader("content-disposition","attachment;filename="+outPutFileName);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         //定义输出类型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         response.setContentType("APPLICATION/msexcel");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         

InBlock.gif        while ( (data = is.read()) != -1)outputstream.write(data);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        is.close();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        outputstream.close();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        response.flushBuffer();    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

花 - xiaolonglulove - 我的博客    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 在文件不存在的情况下,采用生成输出流的方式实现左键点击下载功能。

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param outPutFileName 保存的文件名

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param out ServletOutputStream对象    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param downExcel 填充了数据的ExcelModel

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param HttpServletResponse     

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @see HttpServletResponse

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @throws Exception

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public void downLoad(String outPutFileName, ExcelModel downExcel,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            HttpServletResponse response) throws Exception 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //取得输出流

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        OutputStream out = response.getOutputStream();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //清空输出流

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        response.reset();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //设置响应头和下载保存的文件名              

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        response.setHeader("content-disposition","attachment;filename="+outPutFileName);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //定义输出类型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        response.setContentType("APPLICATION/msexcel");       

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客  

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        ExcelOperator op = new ExcelOperator();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //out:传入的输出流

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        op.WriteExcel( downExcel,out);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        out.close();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //这一行非常关键,否则在实际中有可能出现莫名其妙的问题!!!

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       response.flushBuffer();//强行将响应缓存中的内容发送到目的地                              

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客   

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

3000 - m316517182 - m316517182的博客}

  请注意,BaseExcelDownLoad只是提供了一个生成下载文件流的公共方法,而Excel表格需要显示的数据内容则因具体业务与需求的不同而不同,因此,必须根据具体情况提供一个该类的继承类,实现createDownLoadExcel()方法,以生成所需要输出内容的Excel表格文件流。要说明的是,该方法的参数list ,实际上是一个ArrayList集合,我们将从数据库查询出来的记录集保存在其中,我想这是很容易做到的,实现的方式也可以各种各样。我项目中是通过Hibernate的Query对象取得查询结果集,它正好也是一个ArrayList。不同的客户,甚至不同功能模块内需要生成的Excel报表的内容都是不一样的。下面还是给出我的一个实现类作为例子吧。

  四、实现按照具体的需求生成Excel表格文件流的类举例:继承自BaseExcelDownLoad类的AgentInfoExcelDownLoad:

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客package com.qnjian.myprj.excel;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.math.BigDecimal;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.ArrayList;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.Iterator;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.List;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import org.apache.struts.action.ActionForm;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import com.netease.bid.cs.model.BidAgent;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import com.netease.bid.cs.model.BidUser;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import com.netease.bid.cs.util.DateUtil;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import com.netease.bidding.cs.servlet.InitCsServlet;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import com.netease.bidding.cs.vo.InstructUser;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客public class AgentInfoExcelDownLoad extends BaseExcelDownLoad 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    public ExcelModel createDownLoadExcel(List list, ActionForm form,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            ExcelModel excel) throws Exception 在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        String titleStr = "客户帐号;公司名称;所属地区;帐户余额;注册日期;联系方式;联系人;";

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        ArrayList data = new ArrayList();        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        Iterator ir = list.iterator();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        while(ir.hasNext())在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            ArrayList rowData = new ArrayList();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            BidAgent user = (BidAgent)ir.next();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(user.getName());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(user.getCorpName());            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            //取得所在省名称

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            String provStr = (user.getProvince()==null ) ? 

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    "" : InitCsServlet.getProvinceStr(

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    user.getProvince());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            //取得所在地区名称

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             String cityStr = (user.getCity()==null) ?

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                     "" : InitCsServlet.getCityStr(

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                   user.getCity());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            if(provStr.equals(cityStr))在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                cityStr = "";

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(provStr+" "+cityStr);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        BigDecimal balance =user.getReturnBalance().add(user.getBalance());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(balance);            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            String date = DateUtil.getFormatDate(user.getCreateTime(),"yyyy-MM-dd");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(date);        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(user.getPhone());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            rowData.add(user.getLinkMan());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            data.add(rowData);        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        String[] titles = titleStr.split(";");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        /**//*for(int i=0;i<titles.length;i++){

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            System.out.print(titles[i]+" ");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        }*/

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        ArrayList header = new ArrayList();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        for (int i=0;i<titles.length;i++)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            header.add(titles[i]);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //设置报表标题

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        excel.setHeader(header);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //设置报表内容

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        excel.setData(data);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        return excel;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客}

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

        五、编写一个操作类,进行生成下载文件流的操作:

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客/** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Title: Excel表操作</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Description:用于生成Excel格式文件 </p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Copyright: Copyright (c) 2005-10-20</p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * <p>Company: *** </p>

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * @author zzj

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 * @version 1.0

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客package com.qnjian.myprj.excel;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import org.apache.poi.hssf.usermodel.*;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.FileOutputStream;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.BufferedOutputStream;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.util.ArrayList;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.math.BigDecimal;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客import java.io.OutputStream;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客/** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 *实现生成Excel文件的操作

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客public class ExcelOperator在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客女孩看了会哭男孩看了会沉默(更新版) - chen_19891027mh - ︶ㄣ惢ぐ傷      /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * 将数据信息写入到Excel表文件,采取自建输出流的方式。

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * @param excel ExcelModel Excel表的模型对象    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       * @throws Exception

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     public  void WriteExcel(ExcelModel excel)throws Exception在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{         

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      try在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{  

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       String file = excel.getPath();

¥-¥ - 无名指 - 我的心中星星是最亮的钻石       

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       //新建一输出文件流

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       FileOutputStream fOut = new FileOutputStream(file);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       BufferedOutputStream bf =new BufferedOutputStream(fOut);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        HSSFWorkbook workbook =this.getInitWorkbook(excel);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        // 把相应的Excel 工作簿存盘

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        workbook.write(fOut);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        fOut.flush();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        bf.flush();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        // 操作结束,关闭文件 

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        bf.close();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        fOut.close();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客       // System.out.println("Done!");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      }catch(Exception e)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        //System.out.print("Failed!");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客          throw new Exception(e.getMessage());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      * 将数据信息写入到Excel表文件 ,采取传入输出流的方式。

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      * @param excel Excel表的模型对象 

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      * @param out  OutputStream 输出流

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      * @throws Exception

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客      */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     public  void WriteExcel(ExcelModel excel,OutputStream out)throws Exception在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         try在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             HSSFWorkbook workbook =this.getInitWorkbook(excel);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             workbook.write(out);          

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                out.close();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            // System.out.println("Done!");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         }catch(Exception e)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             //System.out.println("Failed!");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             throw new Exception(e.getMessage());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客         

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * 取得填充了数据的工作簿

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @param excel ExcelModel Excel表的模型对象

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     * @return HSSFWorkbook 工作簿对象

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客     */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客    private  HSSFWorkbook getInitWorkbook(ExcelModel excel)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            // 创建新的Excel 工作簿

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            HSSFWorkbook workbook = new HSSFWorkbook();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             //在Excel工作簿中建一工作表

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             HSSFSheet sheet = null;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             String sheetName = excel.getSheetName();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             if(sheetName!=null)sheet=workbook.createSheet(sheetName);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             else sheet=workbook.createSheet();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             //设置表头字体

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             HSSFFont font_h = workbook.createFont();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             font_h.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             //设置格式

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             HSSFCellStyle cellStyle= workbook.createCellStyle();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客             cellStyle.setFont(font_h);            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客              //在索引0的位置创建行(最顶端的行)

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               HSSFRow row = sheet.createRow((short)0);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               ArrayList header = excel.getHeader();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               if(header!=null)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                   for(int i=0;i<header.size();i++)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                  //在索引0的位置创建单元格(左上端)

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                  HSSFCell cell = row.createCell((short)i);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                  // 定义单元格为字符串类型

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 cell.setCellType(HSSFCell.CELL_TYPE_STRING);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 //设置解码方式

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 cell.setEncoding((short)1);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 //设置单元格的格式

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 cell.setCellStyle(cellStyle);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 // 在单元格中写入表头信息

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                 cell.setCellValue((String)header.get(i));

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                   }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               ArrayList cdata = excel.getData();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               for (int i=0;i<cdata.size();i++)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                //从第二行开始

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                HSSFRow row1 = sheet.createRow(i+1);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                ArrayList rdata =(ArrayList)cdata.get(i);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               //打印一行数据

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                for (int j=0;j<rdata.size();j++)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

枪口对准奥迪TT 标致308 RC Z概念车亮相 - 东方使者 - 俺是沭阳人

枪口对准奥迪TT 标致308 RC Z概念车亮相 - 东方使者 - 俺是沭阳人                    HSSFCell cell = row1.createCell( (short)j);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    cell.setCellType(HSSFCell.CELL_TYPE_STRING);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    //设置字符编码方式

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    cell.setEncoding((short)1);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                   Object o = rdata.get(j);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    //造型,使写入到表中的数值型对象恢复为数值型,

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                   //这样就可以进行运算了

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    if(o instanceof BigDecimal)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        BigDecimal b=(BigDecimal)o;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        cell.setCellValue(b.doubleValue());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    else if(o instanceof Integer)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           Integer it =(Integer)o;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           cell.setCellValue(it.intValue());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    else if(o instanceof Long)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        Long l =(Long)o;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        cell.setCellValue(l.intValue());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    else if(o instanceof Double)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        Double d =(Double)o;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        cell.setCellValue(d.doubleValue());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    else if(o instanceof Float)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        Float f = (Float)o;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        cell.setCellValue(f.floatValue());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    else在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                        cell.setCellValue(o+"");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                    }             

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

经典单机游戏下载地址 - 锋哥哥 - 欢迎来到我的家园                    

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客           return workbook;

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客            

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客  /** *//**

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客   * Just to test

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客   * @param args String[]

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客   */

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客  public static void main(String[] args)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                ArrayList data=new ArrayList();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                ArrayList header = new ArrayList();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                header.add("学号");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                header.add("姓名");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                header.add("成绩");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                for (int i=0;i<3;i++)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                     ArrayList data1=new ArrayList();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                            data1.add((i+1)+"");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                            data1.add("Name"+(i+1));

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                            data1.add(""+(80+i));

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                            data.add(data1);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                ExcelModel model = new ExcelModel();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                model.setPath("E:/test.xls");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                model.setHeader(header);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                model.setData(data);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                ExcelOperator eo= new ExcelOperator();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               try在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                  eo.WriteExcel(model);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               }catch(Exception e)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                     System.out.println(e.getMessage());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客               }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客        }

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客}

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

         六、功能流程小结:

         涉及到不同的项目,采取的框架与结构是可能不同的。我的实现方法可以应用到不同的项目中去,只是作为一个借鉴,它可能需要针对不同情况做相应调整与修改。

         我的项目是采取了Spring+Struts+Hibernate的框架实现的,显示层仍然使用HTML、JSP文件,通过它传递客户端的请求,转到Action类调用业务逻辑对象实现相应功能。持久层使用了Hibernate,使用Hibernate作为数据持久层,在开发与维护方面都带来了较大的便利。至于相关框架的配置与实现,则不在本文论述的范围,请读者朋友参阅相关资料。我的项目中,使用了一个Service类(类似Manager的功能,编写接口与实现类,在Spring配置文件中加入,利用Spring的依赖注入技术在运行中取得对应的Bean实例......)来集成业务逻辑功能,通过它调用涉及到的数据访问类(DAO类),具体Dao类又利用Hibernate提供的对象进行数据库的查询或其他操作。这些东西,我就不再详述了,相信对这些技术使用得比我娴熟者大有人在。功能的最终实现,请看我在某个Action中的几行代码:

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客 ExcelModel excel = new ExcelModel();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                         excel.setSheetName("BidCost");                           

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                                 

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                            //写入到Excel格式输出流供下载

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           try在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{                           

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                         

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                                //调用自编的下载类,实现Excel文件的下载

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               ExcelDownLoad downLoad = new BidCostExcelDownLoad();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               ExcelModel downExcel= downLoad.createDownLoadExcel(bidReportList,bcf,excel);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               //不生成文件,直接生成文件输出流供下载

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               downLoad.downLoad("BidCost.xls",downExcel,response);

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               log.info("create Excel outputStream successful!");                               

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           }catch(Exception e)在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客{

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                               msg.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage(

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                                       "bidding.cs.fileUpDown.fileDownError"));//文件下载失败!

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                                  saveErrors(request, msg);                                

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                              

噩梦般的一天 - czb4841@126 - 小天的Loses World                                 log.info("create Excel outputStream  failed!");

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                              log.info(e.getMessage());

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                              //e.printStackTrace();

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                              

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                              return mapping.getInputForward();                             

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客                           }                       

在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

         请看客户端的显示页面:

         在线实时生成Excel文件流供下载  - 清风幻影 - 清风幻影的博客

 

  

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值