KAY

          人之所以能,是相信能。
          posts - 6, comments - 5, trackbacks - 0, articles - 11
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          用jxl把JSP中的數據導入到EXECL中

          Posted on 2007-05-25 18:52 KAY 閱讀(1235) 評論(0)  編輯  收藏
          首先要使用Workbook類的工廠方法創建一個可寫入的工作薄(Workbook)對象,這里要注意的是,只能通過API提供的工廠方法來創建Workbook,而不能使用WritableWorkbook的構造函數,因為類WritableWorkbook的構造函數為protected類型。示例代碼片段如下:  
             
             
            import   java.io.*;  
            import   jxl.*;  
            import   jxl.write.*;  
            …   …   …   …  
            try  
            {  
            //構建Workbook對象,   只讀Workbook對象  
            //Method   1:創建可寫入的Excel工作薄  
                    jxl.write.WritableWorkbook   wwb   =   Workbook.createWorkbook(new   File(targetfile));  
             
            //Method   2:將WritableWorkbook直接寫入到輸出流  
            /*  
                    OutputStream   os   =   new   FileOutputStream(targetfile);  
                    jxl.write.WritableWorkbook   wwb   =   Workbook.createWorkbook(os);  
            */  
            }  
            catch   (Exception   e)  
            {  
            e.printStackTrace();  
            }  
             
               
             
            API提供了兩種方式來處理可寫入的輸出流,一種是直接生成本地文件,如果文件名不帶全路徑的話,缺省的文件會定位在當前目錄,如果文件名帶有全路徑的話,則生成的Excel文件則會定位在相應的目錄;另外一種是將Excel對象直接寫入到輸出流,例如:用戶通過瀏覽器來訪問Web服務器,如果HTTP頭設置正確的話,瀏覽器自動調用客戶端的Excel應用程序,來顯示動態生成的Excel電子表格。  
             
            接下來就是要創建工作表,創建工作表的方法與創建工作薄的方法幾乎一樣,同樣是通過工廠模式方法獲得相應的對象,該方法需要兩個參數,一個是工作表的名稱,另一個是工作表在工作薄中的位置,參考下面的代碼片段:  
             
             
            //創建Excel工作表  
            jxl.write.WritableSheet   ws   =   wwb.createSheet("Test   Sheet   1",   0);  
             
               
             
            "這鍋也支好了,材料也準備齊全了,可以開始下鍋了!",現在要做的只是實例化API所提供的Excel基本數據類型,并將它們添加到工作表中就可以了,參考下面的代碼片段:  
             
             
            //1.添加Label對象  
            jxl.write.Label   labelC   =   new   jxl.write.Label(0,   0,   "This   is   a   Label   cell");  
            ws.addCell(labelC);  
             
            //添加帶有字型Formatting的對象  
            jxl.write.WritableFont   wf   =   new   jxl.write.WritableFont(WritableFont.TIMES,   18,   WritableFont.BOLD,   true);  
            jxl.write.WritableCellFormat   wcfF   =   new   jxl.write.WritableCellFormat(wf);  
            jxl.write.Label   labelCF   =   new   jxl.write.Label(1,   0,   "This   is   a   Label   Cell",   wcfF);  
            ws.addCell(labelCF);  
             
            //添加帶有字體顏色Formatting的對象  
            jxl.write.WritableFont   wfc   =   new   jxl.write.WritableFont(WritableFont.ARIAL,   10,   WritableFont.NO_BOLD,   false,  
            UnderlineStyle.NO_UNDERLINE,   jxl.format.Colour.RED);  
            jxl.write.WritableCellFormat   wcfFC   =   new   jxl.write.WritableCellFormat(wfc);  
            jxl.write.Label   labelCFC   =   new   jxl.write.Label(1,   0,   "This   is   a   Label   Cell",   wcfFC);  
            ws.addCell(labelCF);  
             
            //2.添加Number對象  
            jxl.write.Number   labelN   =   new   jxl.write.Number(0,   1,   3.1415926);  
            ws.addCell(labelN);  
             
            //添加帶有formatting的Number對象  
            jxl.write.NumberFormat   nf   =   new   jxl.write.NumberFormat("#.##");  
            jxl.write.WritableCellFormat   wcfN   =   new   jxl.write.WritableCellFormat(nf);  
            jxl.write.Number   labelNF   =   new   jxl.write.Number(1,   1,   3.1415926,   wcfN);  
            ws.addCell(labelNF);  
             
            //3.添加Boolean對象  
            jxl.write.Boolean   labelB   =   new   jxl.write.Boolean(0,   2,   false);  
            ws.addCell(labelB);  
             
            //4.添加DateTime對象  
            jxl.write.DateTime   labelDT   =   new   jxl.write.DateTime(0,   3,   new   java.util.Date());  
            ws.addCell(labelDT);  
             
            //添加帶有formatting的DateFormat對象  
            jxl.write.DateFormat   df   =   new   jxl.write.DateFormat("dd   MM   yyyy   hh:mm:ss");  
            jxl.write.WritableCellFormat   wcfDF   =   new   jxl.write.WritableCellFormat(df);  
            jxl.write.DateTime   labelDTF   =   new   jxl.write.DateTime(1,   3,   new   java.util.Date(),   wcfDF);  
            ws.addCell(labelDTF);  
             
               
             
            這里有兩點大家要引起大家的注意。第一點,在構造單元格時,單元格在工作表中的位置就已經確定了。一旦創建后,單元格的位置是不能夠變更的,盡管單元格的內容是可以改變的。第二點,單元格的定位是按照下面這樣的規律(column,   row),而且下標都是從0開始,例如,A1被存儲在(0,   0),B1被存儲在(1,   0)。  
             
            最后,不要忘記關閉打開的Excel工作薄對象,以釋放占用的內存,參見下面的代碼片段:  
             
             
            //寫入Exel工作表  
            wwb.write();  
             
            //關閉Excel工作薄對象  
            wwb.close();  
             
               
           

          但是,如何根據表格的變化而到入execl呢?就象jpivot那樣的表格是不固定的  
            ,如何才能按照頁面的樣式導入呢?
          表格寬度也可以自定義:  
            如  
            sheet.setColumnView(0,6);    
            sheet.setColumnView(1,12);  
            sheet.setColumnView(2,20);  
            sheet.setColumnView(3,11);  

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


          網站導航:
           
          QQ:
          254653340
          MSN:
          xf_chouyang@hotmail.com
          主站蜘蛛池模板: 永寿县| 玉环县| 阆中市| 辽阳市| 哈尔滨市| 凤阳县| 乌鲁木齐县| 大余县| 军事| 霍山县| 宜君县| 敦化市| 钦州市| 延边| 遂川县| 封开县| 始兴县| 德昌县| 洱源县| SHOW| 延安市| 启东市| 平阴县| 杭州市| 河北区| 锦州市| 洮南市| 昌吉市| 东方市| 十堰市| 广丰县| 邢台县| 邻水| 苏尼特左旗| 和龙市| 双峰县| 佛学| 延吉市| 万年县| 太白县| 昌吉市|