<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 8  文章 - 24  trackbacks - 0
    <2009年7月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿(4)

    隨筆檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    1.下載jxl.rar包

    項(xiàng)目地址:http://www.andykhan.com/jexcelapi/
    下載地址:http://www.andykhan.com/jexcelapi/download.html

    目前版本的信息
  • Reads data from Excel 95, 97, 2000 workbooks
  • Reads and writes formulas (Excel 97 and later only)
  • Generates spreadsheets in Excel 2000 format
  • Supports font, number and date formatting
  • Supports shading and colouring of cells
  • Modifies existing worksheets
  • Supports image creation
  • Preserves macros on copy
  • Customizable logging


    2.把包放到WEB-INF的lib目錄下在開發(fā)環(huán)境中引入這個(gè)包

    3.開始寫代碼了,這里以一個(gè)Struts1.2的ActionMethod為例,其實(shí)只要能取了request和response對象,操作都是一樣的的。

     1    /**
     2     * 生成信息的XLS
     3
         * alex 2007-7-3 下午05:01:56
     4     */

     5    public ActionForward makeRichVoteRZ(ActionMapping mapping, ActionForm form,
     6
                HttpServletRequest request, HttpServletResponse response)
     7            throws Exception 
    {
     8
            
     9        //讀出數(shù)據(jù)

    10        String richvote_id = Common.getValue("richvote_id", request);
    11        String sql = "select user_name,user_sex,user_address,card_id,postalcode,mobile,tel_day,email from tbl_member where member_id in (select user_id from tbl_vote_detail where vote_id in(select vote_id from tbl_vote where vote_board = '"+richvote_id+"'))"
    ;
    12        RowSet rs =
     table.select(sql);
    13
            
    14        //生成xls

    15        try{
    16
                
    17            response.setContentType("application/vnd.ms-excel"
    );
    18            response.addHeader("Content-Disposition","attachment;   filename=\""   +  Common.getFileName()+".xls"  +   "\""
    );    
    19            OutputStream os =
     response.getOutputStream();
    20            WritableWorkbook wwb =
     Workbook.createWorkbook(os);
    21
                
    22
                
    23            int ncout =
     rs.length();
    24            int maxnum = 50000//一次最多寫入量

    25            int times = (ncout+maxnum-1)/maxnum;
    26
                
    27            //大循環(huán)

    28            for(int t=0; t<times; t++){
    29
                    
    30                //新建一張表

    31                WritableSheet wsheet = wwb.createSheet("members_"+(t+1),t);
    32                //設(shè)置表頭

    33                Label label = new Label(0,0,"");
    34
                    wsheet.addCell(label);
    35                label = new Label(0,0,"會員姓名"
    );
    36
                    wsheet.addCell(label);
    37                label = new Label(1,0,"卡號"
    );
    38
                    wsheet.addCell(label);
    39                label = new Label(2,0,"聯(lián)系地址"
    );
    40
                    wsheet.addCell(label);
    41                label = new Label(3,0,"郵編"
    );
    42
                    wsheet.addCell(label);
    43                label = new Label(4,0,"聯(lián)系電話"
    );
    44
                    wsheet.addCell(label);
    45                label = new Label(5,0,"手機(jī)"
    );
    46
                    wsheet.addCell(label);
    47                label = new Label(6,0,"Email"
    );
    48
                    wsheet.addCell(label);
    49                label = new Label(7,0,"性別"
    );
    50
                    wsheet.addCell(label);
    51
                    
    52
                    
    53                //讀出數(shù)據(jù)

    54                int base = (t*maxnum);
    55                for(int i = 0; i < rs.length(); i++)
    {
    56                    Row rw = rs.get(i+
    base);
    57                    //System.out.println((i+1));

    58                    label = new Label(0,(i+1),(String)rw.get("user_name")    );
    59
                        wsheet.addCell(label);
    60                    label = new Label(1,(i+1),(String)rw.get("card_id"
    ));
    61
                        wsheet.addCell(label);
    62                    label = new Label(2,(i+1),(String)rw.get("user_address"
    ));
    63
                        wsheet.addCell(label);
    64                    label = new Label(3,(i+1),(String)rw.get("postalcode"
    ));
    65
                        wsheet.addCell(label);
    66                    label = new Label(4,(i+1),(String)rw.get("tel_day"
    ));
    67
                        wsheet.addCell(label);
    68                    label = new Label(5,(i+1),(String)rw.get("mobile"
    ));
    69
                        wsheet.addCell(label);
    70                    label = new Label(6,(i+1),(String)rw.get("email"
    ));
    71
                        wsheet.addCell(label);
    72                    label = new Label(7,(i+1),(String)rw.get("user_sex"
    ));
    73
                        wsheet.addCell(label);
    74                }
        
    75
                    
    76            }
    //結(jié)束大循環(huán)
    77            
    78
                wwb.write();
    79
                wwb.close();
    80
                os.close();
    81
                response.flushBuffer();
    82
                
    83        }
    catch(Exception e){
    84            System.out.println("生成信息表(Excel格式)時(shí)出錯(cuò):"
    );
    85
                e.printStackTrace();
    86        }

    87        
    88        return null
    ;
    89    }


    代碼簡單說明:
    1.設(shè)定好response的相關(guān)屬性:
    response.setContentType("application/vnd.ms-excel");
    response.addHeader("Content-Disposition","attachment;   filename=\""   +  Common.getFileName()+".xls"  +   "\""); 
    2.取到response的OutputStream實(shí)例,并用這個(gè)實(shí)例化一個(gè)WritableWorkbook對象
    OutputStream os = response.getOutputStream();
    WritableWorkbook wwb = Workbook.createWorkbook(os);
    3.新建一個(gè)表
    WritableSheet wsheet = wwb.createSheet("members_"+(t+1),t);
    4.往表里加行頭
    Label label = new Label(0,0,"");
        wsheet.addCell(label);
        label = new Label(0,0,"會員姓名");
        wsheet.addCell(label);
        label = new Label(1,0,"卡號");
        wsheet.addCell(label);
        label = new Label(2,0,"聯(lián)系地址");
        wsheet.addCell(label);
        label = new Label(3,0,"郵編");
        wsheet.addCell(label);
        label = new Label(4,0,"聯(lián)系電話");
        wsheet.addCell(label);
        label = new Label(5,0,"手機(jī)");
        wsheet.addCell(label);
        label = new Label(6,0,"Email");
        wsheet.addCell(label);
        label = new Label(7,0,"性別");
        wsheet.addCell(label);
    5.往表里加數(shù)據(jù)行
    for(int i = 0; i < rs.length(); i++){
         Row rw = rs.get(i+base);
         //System.out.println((i+1));
         label = new Label(0,(i+1),(String)rw.get("user_name") );
         wsheet.addCell(label);
         label = new Label(1,(i+1),(String)rw.get("card_id"));
         wsheet.addCell(label);
         label = new Label(2,(i+1),(String)rw.get("user_address"));
         wsheet.addCell(label);
         label = new Label(3,(i+1),(String)rw.get("postalcode"));
         wsheet.addCell(label);
         label = new Label(4,(i+1),(String)rw.get("tel_day"));
         wsheet.addCell(label);
         label = new Label(5,(i+1),(String)rw.get("mobile"));
         wsheet.addCell(label);
         label = new Label(6,(i+1),(String)rw.get("email"));
         wsheet.addCell(label);
         label = new Label(7,(i+1),(String)rw.get("user_sex"));
         wsheet.addCell(label);
        } 
    6.把生成的excel數(shù)據(jù)輸出到response的OutputStream
    wwb.write();
       wwb.close();
       os.close();
       response.flushBuffer();
    7.完成

    有什么疑問可以留言,我會盡量幫助。

  • posted on 2007-09-20 14:47 Vincent.Yu 閱讀(12526) 評論(10)  編輯  收藏

    FeedBack:
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2007-09-27 19:30 千里冰封
    呵呵,POI包不是更好嗎?  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2008-05-30 10:03 艷兒
    (*^__^*) 嘻嘻……,好像不用這么麻煩吧!
    直接在jsp頭部加一行,就ok了啊!o(∩_∩)o...哈哈!
    word頁面只要在jsp頭設(shè)置如下指令:
    <%@page contentType="application/msword;charset=GBK" %>

    excel如下:
    <%@page contentType="application/vnd.ms-excel;charset=GBK" %>

    其他內(nèi)容直接輸出就ok了!
    http://newyaner.blog.sohu.com/84170098.html
      回復(fù)  更多評論
      
    # 補(bǔ)充 2008-05-30 10:05 艷兒
    導(dǎo)出和打印功能都可以這樣實(shí)現(xiàn)!
    如果要?jiǎng)討B(tài)編輯excel文件就用樓主的jxl吧!  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2008-07-16 22:20 易發(fā)布
    易發(fā)布分類信息網(wǎng) http://www.yifabu.cn 引領(lǐng)分類信息新時(shí)代 發(fā)布信息,展示產(chǎn)品,投放廣告,我們?yōu)槟氲酶艿剑涣魅海?6041092
    收錄情況:各大搜索引擎收錄良好,百度每日更新快照,各個(gè)關(guān)鍵字表現(xiàn)良好,排名前列,內(nèi)頁鏈接 http://www.yifabu.cn/link/add.asp  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2008-10-25 01:24 網(wǎng)友
    response.setContentType("application/vnd.ms-excel;charset=gbk");
    我在我的servlet設(shè)置了這個(gè),為什么我彈出的保存窗口,的文件名是亂碼???  回復(fù)  更多評論
      
    # 用ajax發(fā)送請求,怎么獲取[未登錄] 2008-11-19 20:39 小小
    用ajax發(fā)送請求,怎么獲取  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2009-03-02 14:36 wangdong
    我怎么弄都是亂碼呢!!!
    <%@ page contentType="application/vnd.ms-excel;charset=utf-8"%>
    <%@ page import="org.apache.poi.hssf.*,org.apache.poi.hssf.usermodel.*,java.io.*" %>
    <%
    response.setHeader("Pragma","no-cache");
    response.setHeader("Cache-Control","no-cache");
    response.setDateHeader("Expires",0);
    response.setContentType("application/vnd.ms-excel");
    response.setHeader("Content-disposition","attachment;filename=\"test.xls\"");//定義文件名
    HSSFWorkbook wbb = new HSSFWorkbook();
    HSSFSheet sheet = wbb.createSheet();
    wbb.setSheetName(0, "sheet");
    HSSFRow row = sheet.createRow(0);
    HSSFCell cell1 = row.createCell((short)0);
    cell1.setCellValue("test");
    HSSFCell cell2 = row.createCell((short)1);
    cell2.setCellValue("中文");
    OutputStream ops = response.getOutputStream();
    wbb.write(ops);
    ops.flush();
    ops.close();
    %>  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2009-07-28 15:36 yuwenfang
    能否把引的包都貼出來呢?呵呵..本人是菜鳥,沒看明白!  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2011-01-13 18:10 yagjie
    我怎么用不上了  回復(fù)  更多評論
      
    # re: Servlet,JSP 動(dòng)態(tài)生成excel文件并提示下載的簡單方法 2015-10-29 16:48 阿朱
    我在jsp頁面請求action 然后樓主方法我是放在action中的 斷點(diǎn)跟蹤方法 至 彈出下載提示框后 一直在循環(huán)調(diào)用 死循環(huán)了
      回復(fù)  更多評論
      

    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲一区精品中文字幕| 亚洲国产一级在线观看 | 国产成人3p视频免费观看| 久久精品免费观看| 国产自偷亚洲精品页65页| 亚洲精品视频专区| 8x网站免费入口在线观看| 在线观看亚洲一区二区| 1000部拍拍拍18勿入免费视频下载 | 九九久久精品国产免费看小说| 国产成人精品高清免费| 国产亚洲综合久久| 亚洲国产成人精品女人久久久 | 美景之屋4在线未删减免费| 亚洲Aⅴ无码一区二区二三区软件 亚洲AⅤ视频一区二区三区 | 黄网站色视频免费观看45分钟| 四虎影视永久免费观看地址| 高潮内射免费看片| 在线亚洲午夜理论AV大片| 色www永久免费网站| 久久久久亚洲av无码专区喷水| 99re免费99re在线视频手机版| 亚洲成a人片在线观| 免费看www视频| 久久久亚洲欧洲日产国码是AV| 免费视频爱爱太爽了| 亚洲丶国产丶欧美一区二区三区| 免费大香伊蕉在人线国产 | 美美女高清毛片视频黄的一免费 | 一二三四影视在线看片免费 | 黄色一级毛片免费| 久久精品国产精品亚洲艾草网| av大片在线无码免费| 亚洲AV无码专区国产乱码4SE| 天天影院成人免费观看| 国产亚洲精品美女2020久久| 亚洲综合另类小说色区色噜噜| 91福利免费体验区观看区| 国产精品亚洲二区在线| 亚洲国产精品免费视频| 成年丰满熟妇午夜免费视频|