這一片海,源于那一瓢水

          java導(dǎo)入Excel示例

          生成Excel的類:
           public   static   void  main(String args[])  {
                  public void show(){
            try {
                     //打開文件
                     WritableWorkbook book = Workbook.createWorkbook(new File( "test.xls " ));
                     //生成名為“第一頁”的工作表,參數(shù)0表示這是第一頁
                     WritableSheet w0  =  book.createSheet("第一頁 ",0);
                     WritableSheet w1  =  book.createSheet("第二頁 ",1);
                     WritableSheet w2  =  book.createSheet("第三頁 ",2);
                     //在Label對象的構(gòu)造子中指名單元格位置是第一列第一行(0,0),以及單元格內(nèi)容為test
                     //第一個參數(shù)表示列,第二個參數(shù)表示行,第三個參數(shù)表示數(shù)據(jù)
                     Label label = new Label( 0 ,  0 ,  " test " );
                     //將定義好的單元格添加到工作表中
                     w0.addCell(label);
                     //生成一個保存數(shù)字的單元格 必須使用Number的完整包路徑,否則有語法歧義 單元格位置是第二列,第一行,值為789.123
                     jxl.write.Number number  =   new  jxl.write.Number( 1 ,  0 ,  555.12541 );
                     w0.addCell(number);
                     //這種方式是以文本字符的形式將數(shù)值存儲到xls文件中的。
                     w1.addCell(new Label(0,0,"12"));
                     w1.addCell(new Label(1,0,"21"));
                     w1.addCell(new Label(2,0,"123"));
                    
                     //第二列,第一行==========存儲數(shù)字必須有Number的實(shí)例是
                     w1.addCell(new Number(1,0,123));
                     //第二列,第五行
                     w2.addCell(new Number(1,4,123));
                     //寫入數(shù)據(jù)并關(guān)閉文件
                     book.write();
                     book.close();
            } catch (Exception e)  {
                     System.out.println(e);
                 }
                }
              }

          讀取Excel的類:
          public   class  ReadExcel  {
               public   static   void  main(String args[])  {
                   try   {
                      Workbook book = Workbook.getWorkbook(new File("f:\\test.xls"));
                      //獲得第一個工作表對象
                      Sheet sheet  =  book.getSheet(0);
                      //得到第一列第一行的單元格
                      Cell cell1 = sheet.getCell(0,0);
                      String result = cell1.getContents();
                      System.out.println(result);
                      //得到整個第一列
                      Cell [] ces = sheet.getColumn(0);
                      for (int i = 0; i < ces.length; i++) {
              System.err.println(ces[i].getContents());
             }
                      //得到整個第一行
                      Cell [] crs = sheet.getRow(0);
                      for (int i = 0; i < crs.length; i++) {
              System.err.println(crs[i].getContents());
             }
                      book.close();
                  }   catch  (Exception e)  {
                      System.out.println(e);
                  }
              }
          //修改Excel的類
          public   class  UpdateExcel  {
               public static void  main(String args[])  {
                   try {
                      //Excel獲得文件
                      Workbook wb = Workbook.getWorkbook(new File("f:\\test.xls" ));
                      //打開一個文件的副本,并且指定數(shù)據(jù)寫回到原文件
                      WritableWorkbook book = Workbook.createWorkbook(new File("f:\\test.xls"),wb);
                      //添加一個工作表
                      //第一個參數(shù):新添加的頁面名稱。2表示它的位置,從零開始,2表示第三頁
                      WritableSheet sheet = book.createSheet("第二頁 ",2);
                      sheet.addCell(new Label(0,0," 第二頁的測試數(shù)據(jù) " ));
                      book.write();
                      book.close();
                  }   catch  (Exception e)  {
                      System.out.println(e);
                  }
              }
          }
          其他操作:
          其他操作
           一、 數(shù)據(jù)格式化
           在Excel中不涉及復(fù)雜的數(shù)據(jù)類型,能夠比較好的處理字串、數(shù)字和日期已經(jīng)能夠滿足一般的應(yīng)用。
          1、 字串格式化
           字符串的格式化涉及到的是字體、粗細(xì)、字號等元素,這些功能主要由WritableFont和WritableCellFormat類來負(fù)責(zé)。
           假設(shè)我們在生成一個含有字串的單元格時,使用如下語句,為方便敘述,我們?yōu)槊恳恍忻罴恿司幪枺?br /> WritableFont font1 = new  WritableFont(WritableFont.TIMES, 16 ,WritableFont.BOLD); ①
          WritableCellFormat format1 = new  WritableCellFormat(font1); ②
          Label label = new  Label( 0 , 0 ,”data  4  test”,format1) ③
           其中
           ①指定了字串格式:字體為TIMES,字號16,加粗顯示。WritableFont有非常豐富的 構(gòu)造子,供不同情況下使用,jExcelAPI的java-doc中有詳細(xì)列表,這里不再列出。
           ②處代碼使用了WritableCellFormat類,這個類非常重要,通過它可以指定單元格的各種屬性,后面的單元格格式化中會有更多描述。
           ③處使用了Label類的構(gòu)造子,指定了字串被賦予那種格式。在WritableCellFormat類中,還有一個很重要的方法是指定數(shù)據(jù)的對齊方式。
           比如針對我們 上面的實(shí)例,可以指定:
          //把水平對齊方式指定為居中
          format1.setAlignment(jxl.format.Alignment.CENTRE);
          //把垂直對齊方式指定為居中
          format1.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);

          二、單元格操作
          Excel中很重要的一部分是對單元格的操作,比如行高、列寬、單元格合并等,所幸jExcelAPI提供了這些支持。這些操作相對比較簡單,下面只介紹一下相關(guān)的API。
          1、 合并單元格
          WritableSheet.mergeCells( int  m, int  n, int  p, int  q);
          //作用是從(m,n)到(p,q)的單元格全部合并,比如:
          WritableSheet sheet = book.createSheet(“第一頁”, 0 );
          //合并第一列第一行到第六列第一行的所有單元格
          sheet.mergeCells( 0 , 0 , 5 , 0 );
          合并既可以是橫向的,也可以是縱向的。合并后的單元格不能再次進(jìn)行合并,否則會觸發(fā)異常。

          2、 行高和列寬
          WritableSheet.setRowView(int i,int height);
          //作用是指定第i+1行的高度,比如:
          //將第一行的高度設(shè)為200
          sheet.setRowView(0,200);
          WritableSheet.setColumnView(int i,int width);
          //作用是指定第i+1列的寬度,比如:
          //將第一列的寬度設(shè)為30
          sheet.setColumnView(0,30);
          jExcelAPI還有其他的一些功能,比如插入圖片等,這里就不再一一介紹,讀者可以自己探索。
          其中:如果讀一個excel,需要知道它有多少行和多少列,如下操作:
          Workbook book = Workbook.getWorkbook(new File("測試1.xls"));
          //獲得第一個工作表對象
          Sheet sheet = book.getSheet(0);
          //得到第一列第一行的單元格
          int columnum = sheet.getColumns();//得到列數(shù)
          int rownum = sheet.getRows();//得到行數(shù)
          System.out.println(columnum);
          System.out.println(rownum);
          for(int i = 0;i < rownum;i ++ )//循環(huán)進(jìn)行讀寫
          {
              for(int j = 0;j < columnum;j ++) {
                  Cell cell1 = sheet.getCell(j, i);
                  String result = cell1.getContents();
                  System.out.print(result);
                  System.out.print( " \t " );
              }
              System.out.println();
          }
          book.close();

          posted on 2010-06-25 17:49 何方 閱讀(524) 評論(0)  編輯  收藏 所屬分類: java

          My Links

          Blog Stats

          常用鏈接

          留言簿

          隨筆檔案

          文章分類

          文章檔案

          相冊

          搜索

          最新評論

          主站蜘蛛池模板: 灵武市| 崇阳县| 金昌市| 汶上县| 保亭| 河南省| 平乡县| 石屏县| 通化市| 湖南省| 抚松县| 应城市| 靖西县| 泾川县| 阜阳市| 泉州市| 称多县| 渭南市| 甘孜| 苍梧县| 荥阳市| 海城市| 乌什县| 玉龙| 南宁市| 赣州市| 扶绥县| 浑源县| 毕节市| 鹤山市| 林甸县| 晋宁县| 青阳县| 房产| 山东省| 银川市| 迁安市| 灯塔市| 洪江市| 正阳县| 威信县|