Java生成Excel文件通用程序

        最近公司因业务需求提出要将生成Excel文件自动化,换句话说,就是要统一实现生成Excel文件。既是,同样一个程序可以针对不同的文档要求生成不同的程序,再也不用慢世界去编写。

        我们用到了JXL的一些知识,关于JXL我懂得也不是很多,但是找到了一篇很不错的文章,我想也该推荐大家去看看。好东西,自然是大家分享。

http://blog.csdn.net/airskys/archive/2005/03/31/334548.aspx

        接下来看看我们的通用程序是怎么写的。其实也没有什么敲门,只是传进去了一个将要从数据库中读出数据的SQL语句,将执行出来的结果写入到 Excel中显示出来而已。

 

import  jxl.Workbook;
import  jxl.write.Label;
import  jxl.write.WritableWorkbook;
import  jxl.write.WriteException;


public   void  getExcelResult(String sql,OutputStream os)  throws  SQLException,IOException, WriteException{

                   
// 首先获取结果集
                    
// 这里获取RowSet的方法可以自己写
                     CachedRowSet crs  =   this .GetResult(sql);

                     
// 然后将结果集转化为Excel输出
     
// 初始化工作

     WritableWorkbook wwb 
=   null ;

     
try  {
                            wwb 
=  Workbook.createWorkbook(os);

          
// 创建工作表
           jxl.write.WritableSheet ws  =  wwb.createSheet( " Sheet1 " 0 );
                            
// 逐行添加数据
          int  i  =   0 ;
         
while  (crs.next()){
             
for  ( int  j = 1 ;j <= crs.getMetaData().getColumnCount();j ++ ){
                                  String s 
=  crs.getString(j);
                 Label labelC 
=   new  Label(j - 1 , i, s);
                 ws.addCell(labelC);
            }
                i
++ ;
        }

        } 
catch  (Exception e) {
            logger.error(
" export excel error: " + e);
            e.printStackTrace();
        } 
finally  {
            
if  (wwb  !=   null ){
                wwb.write();
                wwb.close();
            }
        }
        
    }

        看到了吧!其实这个方法很简单,就是提供一个查询的SQL语句和一个OutPutStream对象就可以了。

        接下来看看我是怎么在JSP页面中调用并且生成文档,然后提示用户是打开还是保存的。

 

< body >
    
<%

        response.reset();
        response.setContentType(
" application/vnd.ms-excel " );        
        String sql
= request.getParameter( " sql " );
        Sqlconn.getExcelResult(sql,response.getOutputStream());
    
%>     
</ body >

        在前一个页面中提交要查询的SQL语句,在这里得到后,调用getExcelResult()方法创建Excel文件,就在这里一步完成了。可以看到,这里的OutPutStream对象我使用了Response的getOutPutSteam()方法得到了一个OutPutSteam,执行的结果将会对response进行操作。在此之前,已经设定JSP文件的ContentType为application/vnd.ms-excel,即会得到这个response对象操作形成的excel文件。

        当然,这样执行出来的结果不是很好看。所以,可以想办法修改生成文档的样式等。关于这方面,上面的地址中有很详细的介绍。非常使用。大家可以根据自己的情况写出各种各样的样式来,真是不错啊。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值