JXL(JExcleApi)Excle詳細使用心得

          功能:寫入/讀取Excle,設置打印樣式排版,鎖定列與行,設置打印標題,給Excle加密。

          java報表JXL和POI打印設置
           =======================================   引用來自互聯網  start ===============================================

          JXL的打印設置在jxl.SheetSettings這個類中,我們可以通過方法Sheet(或者WritableSheet#getSettings()獲取。

          1.頁面

          1.1方向

          SheetSetting#setOrientation(PageOrientation po)

          參數:  PageOrientation#LANDSCAPE       橫向打印

          PageOrientation# PORTRAIT       縱向打印

          1.2縮放

          1.2.1縮放比例(A) SheetSetting #setScaleFactor (int);百分比形式

          1.2.2調整(F)

          頁寬 SheetSetting #setFitWidth(int);

          頁高 SheetSetting #setFitHeight(int);

          1.3紙張大小(Z) SheetSetting #setPaperSize (PaperSize);

          紙張大小的定義說明參見PaperSize類中的常量。

          1.4起始頁碼(R) SheetSetting #setPageStrart(int);[默認狀態(tài)]

          2頁面距

          2.1(T) SheetSetting # setTopMargin (double);

          2.2(B) SheetSetting # setBottomMargin (double);

          2.3(L) SheetSetting # setLeftMargin (double);

          2.4(R) SheetSetting # setRightMargin (double);

          2.5頁眉(A) SheetSetting #setHeaderMargin(double);

          2.6頁腳(F) SheetSetting #setFooterMargin(double);

          2.7居中方式

          2.7.1水平(Z) SheetSetting # setHorizontalCentre (boolean);

          2.7.2垂直(V) SheetSetting #setVerticallyCenter(boolean);

          3頁眉/頁腳

          3.1頁眉SheetSetting # setHeaderHeaderFooter;

          說明:

          對于HeaderFooter的設置,首先確定頁眉的位置(左、中、右),通過HeaderFooter#getCentre()(或者getLeft()getRight())方法獲取HeaderFooter.Contents類,之后對這個類的屬性進行操作。

          下面簡單介紹幾個常用方法:

          設置字號:Contents#setFontSize(int)

          設置字體:Contents#setFontName(String)

          設置內容:Contents# appendString),還有appendDate()當前日期等等,具體參考Contents類說明

          3.2頁腳SheetSetting # setFooterHeaderFooter);

          說明同上

          4工作表

          4.1打印區(qū)域

          SheetSettings #setPrintArea(firstCol, firstRow, lastCol, lastRow)

          4.2打印標題

          SheetSettings#setPrintTitles (firstRow,lastRow,firstCol,lastCol);

          SheetSettings#setPrintTitlesCol(firstCol,lastCol)

          SheetSettings#setPrintTitlesRow(firstRow,lastRow)
           =======================================   引用來自互聯網  end ===============================================

          =======================================  自己寫的Demo ========================================
          DEMO

           

          package finance.barcode;

          import static jxl.format.PaperSize.getPaperSize;

          import include.nseer_db.nseer_db;

          import java.io.File;
          import java.io.FileInputStream;
          import java.io.InputStream;

          import jxl.CellView;
          import jxl.HeaderFooter;
          import jxl.Workbook;
          import jxl.format.Alignment;
          import jxl.format.Border;
          import jxl.format.BorderLineStyle;
          import jxl.format.Colour;
          import jxl.format.PageOrientation;
          import jxl.format.PaperSize;
          import jxl.format.VerticalAlignment;
          import jxl.write.Label;
          import jxl.write.NumberFormats;
          import jxl.write.WritableCellFormat;
          import jxl.write.WritableFont;
          import jxl.write.WritableSheet;
          import jxl.write.WritableWorkbook;
          import jxl.write.WriteException;

          /**
           * 
           * 
          @author Solitary
           * 
          @author xing5156@gmail.com
           *
           
          */

          public class BarToExcle extends nseer_db{

              
          /** *********創(chuàng)建字體**************** */
              
          public WritableFont BlodFont ;             // 粗體
              public WritableFont NormalFont ;        // 普通字體
              public WritableFont BarCodeFont ;         // 條形碼字體
              /** ************以下設置幾種格式的單元格屬性************ */
              
          public WritableCellFormat wcf_header ;    // 標題樣式
              public WritableCellFormat wcf_left ;    // 用于正文左
              public WritableCellFormat wcf_barcode ; // 用于條形碼格式
              
              
              
          public BarToExcle(String db) {        
                  
          super(db) ;
                  
                  
          /** ********* 初始化字體 **************** */
                  BlodFont 
          = new WritableFont(WritableFont.ARIAL, 20, WritableFont.BOLD ) ;
                  NormalFont 
          = new WritableFont(WritableFont.ARIAL, 15);
                  BarCodeFont 
          = new WritableFont(WritableFont.ARIAL, 15, WritableFont.BOLD);
                  
                  
          try {
                      
          /** ********* 初始化單元格屬性 **************** */
                      
          // 初始化標題樣式
                      wcf_header = new WritableCellFormat(BlodFont, NumberFormats.TEXT) ; // 實例化單元格格式對象(標題、居中)
                      wcf_header.setBorder(Border.ALL, BorderLineStyle.THIN) ;    // 線條
                      wcf_header.setVerticalAlignment(VerticalAlignment.CENTRE);     // 垂直對齊
                      wcf_header.setAlignment(Alignment.CENTRE);                     // 水平對齊
                      wcf_header.setBackground(Colour.GRAY_25) ;                    // 背景顏色
                      wcf_header.setWrap(true);                                     // 是否換行
                      
                      
          // 用于正文左
                      wcf_left = new WritableCellFormat(NormalFont);                // 實例化單元格格式對象(正文、左對齊)
                      wcf_left.setBorder(Border.ALL, BorderLineStyle.THIN);         // 線條
                      wcf_left.setVerticalAlignment(VerticalAlignment.CENTRE);     // 垂直對齊
                      wcf_left.setAlignment(Alignment.LEFT);
                      wcf_left.setLocked(
          false) ;                                    // 設置鎖定,還得設置SheetSettings啟用保護和設置密碼
                      wcf_left.setWrap(true);                                     // 是否換行
                      
                      
          // 用于條形碼格式
                      wcf_barcode = new WritableCellFormat(BarCodeFont);            // 實例化單元格格式對象(第一列、條形碼)
                      wcf_barcode.setBorder(Border.ALL, BorderLineStyle.THIN);     // 線條
                      wcf_barcode.setVerticalAlignment(VerticalAlignment.CENTRE); // 垂直對齊
                      wcf_barcode.setAlignment(Alignment.CENTRE);
                      wcf_barcode.setLocked(
          true) ;                                // 設置鎖定,還得設置SheetSettings啟用保護和設置密碼
                      wcf_barcode.setWrap(true);                                     // 是否換行
                  }
           catch (WriteException e) {
                      e.printStackTrace();
                  }

              }

              
              
              
          // 創(chuàng)建Excle及工作表
              public int createExcle(StringBuffer buf) {
                  String barCodes[] 
          = null ;
                  
          try {
                      
          /** ********** 創(chuàng)建工作薄  ********** **/
                      WritableWorkbook workbook 
          = Workbook.createWorkbook(new File("d:" + File.separator + "barcode.xls")) ;
                      
          /** ********** 創(chuàng)建工作表  ********** **/
                      WritableSheet sheet 
          = workbook.createSheet("條形碼"0) ;
                      
                      
          /** ********* 打印屬性 **************** */
                      sheet.getSettings().setOrientation(PageOrientation.LANDSCAPE) ;    
          // 設置為橫向打印
                      sheet.getSettings().setPaperSize(PaperSize.A4) ;            // 設置紙張
                      sheet.getSettings().setFitHeight(297) ;                        // 打印區(qū)高度
                      sheet.getSettings().setFitWidth(210) ;                        // 打印區(qū)寬度    
                      
          // 設置列寬
                      sheet.setColumnView(010); // 第1列
                      sheet.setColumnView(130); // 第2列
                      sheet.setColumnView(215);
                      sheet.setColumnView(
          315);
                      sheet.setColumnView(
          430);
                      sheet.setColumnView(
          540);
                      
          // 設置邊距            
                      sheet.getSettings().setTopMargin(0.5) ;
                      sheet.getSettings().setBottomMargin(
          0.3) ;
                      sheet.getSettings().setLeftMargin(
          0.1) ;
                      sheet.getSettings().setRightMargin(
          0.1) ;
                      
          // 設置頁腳
                      sheet.getSettings().getFooter().getCentre().appendPageNumber() ;    // 為頁腳添加頁數
                      sheet.getSettings().setFooterMargin(0.07) ;                            // 設置頁腳邊距(下)
                      
          // 設置保護,并加密碼 鎖定的Cell才會起作用
                      sheet.getSettings().setProtected(true) ;                            // 啟用保護
                      sheet.getSettings().setPassword("xing5156") ;                        // 設置保護密碼
                      
          // 設置打印標題行
                      sheet.getSettings().setPrintHeaders(true) ;                            // 啟用打印頭信息
                      sheet.getSettings().setPrintTitlesRow(00) ;                        // 設置標題行
                      
                      
          /** *********插入標題內容**************** */
                      sheet.addCell(
          new Label(00"條碼"this.wcf_header));
                      sheet.addCell(
          new Label(10"公司"this.wcf_header));
                      sheet.addCell(
          new Label(20"部門"this.wcf_header));
                      sheet.addCell(
          new Label(30"姓名"this.wcf_header));
                      sheet.addCell(
          new Label(40"類型"this.wcf_header));
                      sheet.addCell(
          new Label(50"描述"this.wcf_header));

                      barCodes 
          = buf.toString().split("") ;
                      
          for(int i = 0, y = 1; i < barCodes.length; i++, y++{
                          sheet.setRowView(y, 
          400) ;
                          sheet.addCell(
          new Label(0, y, barCodes[i], this.wcf_barcode)) ;
                          sheet.addCell(
          new Label(1, y, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(2, y, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(3, y, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(4, y, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(5, y, ""this.wcf_left)) ;
                      }

                      
                      
          /** **********以上所寫的內容都是寫在緩存中的,下一句將緩存的內容寫到文件中******** */
                      workbook.write();
                      
          /** *********關閉文件************* */
                      workbook.close();
                      System.out.println(
          "導出成功");
                      
                  }
           catch (Exception e) {
                      System.out.println(
          "在輸出到EXCEL的過程中出現錯誤,錯誤原因:" + e.toString());
                  }

                  
          return barCodes.length ;
              }

              
          /**
               * 構建Workbook對象, 將內容讀取到內存中再更新到原來文件中 
               * 最后關閉寫入操作來完成文件更新
               * 
          @param buf 該對象中包含(11AA◎55BC◎523A)類似的數據,以◎拆分
               * 
          @return    返回本次更新條數
               
          */

              
          public int updateExcle(StringBuffer buf) throws Exception {            // 更新Excle
                  
                  File file 
          = new File("d:" + File.separator + "barcode.xls") ;
                  Workbook wb 
          = null;
                  
          if(file.exists()) {
                      wb 
          = Workbook.getWorkbook(file);
                      WritableWorkbook wwb 
          = Workbook.createWorkbook(file, wb);
                      
          // 讀取第一張工作表
                      WritableSheet sheet = wwb.getSheet(0) ;
                      
                      
          int count = sheet.getRows() ;
                      String barCodes[] 
          = buf.toString().split("") ;
                      
          for(int i = count , y = 0; y < barCodes.length; y++ , i++{
                          sheet.setRowView(i, 
          400) ;
                          sheet.addCell(
          new Label(0, i, barCodes[y], this.wcf_barcode)) ;
                          sheet.addCell(
          new Label(1, i, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(2, i, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(3, i, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(4, i, ""this.wcf_left)) ;
                          sheet.addCell(
          new Label(5, i, ""this.wcf_left)) ;
                      }

                      wwb.write() ;
                      wwb.close() ;
                      wb.close() ;
                      System.out.println(
          "更新完成!") ;
                      
          return barCodes.length ;
                  }
           else {
                      
          return createExcle(buf) ;
                  }

              }

              
              
          // 測試
          //    public static void main(String args[]) {
          //        StringBuffer buf = new StringBuffer() ;        // 測試數據
          //        buf.append("56KF").append("◎").append("12AA").append("◎").append("23GH").append("◎").append("55JJ") ;
          //        try {
          //            BarToExcle bte = new BarToExcle() ;
          //            bte.updateExcle(buf) ;
          //        } catch (Exception e) {
          //            e.printStackTrace();
          //        }
          //    }
          }


          posted on 2011-11-18 14:04 Solitary 閱讀(28031) 評論(1)  編輯  收藏 所屬分類: Tool

          評論

          # re: JXL(JExcleApi)Excle詳細使用心得 2015-11-13 10:02 周周周周

          include是自己洗的么、  回復  更多評論   


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


          網站導航:
           
          <2015年11月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導航

          統(tǒng)計

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 景东| 莱芜市| 普陀区| 行唐县| 凤城市| 东乡族自治县| 汾西县| 荣昌县| 义马市| 西贡区| 郎溪县| 兖州市| 吉木萨尔县| 定南县| 武定县| 洛浦县| 泽库县| 仪征市| 仁寿县| 平和县| 漳州市| 文成县| 宁国市| 博野县| 尼勒克县| 大名县| 天柱县| 威海市| 桐城市| 旅游| 嵩明县| 仁化县| 牡丹江市| 邢台县| 遂昌县| 遵义市| 虎林市| 十堰市| 罗甸县| 武山县| 定兴县|