隨筆-153  評論-235  文章-19  trackbacks-0
                項目中要寫excel,把這個例子寫出來,以后可以看。

          1.寫excel類
          package net.blogjava.chenlb;

          import java.io.IOException;
          import java.io.OutputStream;
          import java.util.List;

          import jxl.Workbook;
          import jxl.write.Label;
          import jxl.write.WritableSheet;
          import jxl.write.WritableWorkbook;
          import jxl.write.WriteException;
          import jxl.write.biff.RowsExceededException;

          /**
           * Jxl 的 Excel寫數據器.
           * 
          @author chenlb 2007-10-29 上午10:39:31
           
          */
          public class JxlExcelWriter {
              
              
          /**
               * 
          @param datas 封裝著Object[]的列表, 一般是String內容.
               * 
          @param title 每個sheet里的標題.
               
          */
              
          public void writeExcel(OutputStream out, List datas, String[] title) {
                  
          if(datas == null) {
                      
          throw new IllegalArgumentException("寫excel流需要List參數!");
                  }
                  
          try {
                      WritableWorkbook workbook 
          = Workbook.createWorkbook(out);
                      WritableSheet ws 
          = workbook.createSheet("sheet 1"0);
                      
          int rowNum = 0;    //要寫的行
                      if(title != null) {
                          putRow(ws, 
          0, title);//壓入標題
                          rowNum = 1;
                      }
                      
          for(int i=0; i<datas.size(); i++, rowNum++) {//寫sheet
                          Object[] cells = (Object[]) datas.get(i);
                          putRow(ws, rowNum, cells);    
          //壓一行到sheet
                      }
                      
                      workbook.write();
                      workbook.close();    
          //一定要關閉, 否則沒有保存Excel
                  } catch (RowsExceededException e) {
                      System.out.println(
          "jxl write RowsExceededException: "+e.getMessage());
                  } 
          catch (WriteException e) {
                      System.out.println(
          "jxl write WriteException: "+e.getMessage());
                  } 
          catch (IOException e) {
                      System.out.println(
          "jxl write file i/o exception!, cause by: "+e.getMessage());
                  }
              }

              
          private void putRow(WritableSheet ws, int rowNum, Object[] cells) throws RowsExceededException, WriteException {
                  
          for(int j=0; j<cells.length; j++) {//寫一行
                      Label cell = new Label(j, rowNum, ""+cells[j]);
                      ws.addCell(cell);
                  }
              }
          }

          2.使用
              public void testWriteExcel() {
                  List datas 
          = new ArrayList();
                  String[] data 
          = {"1""chenlb"};
                  datas.add(data);
                  
          try {
                      OutputStream out 
          = new FileOutputStream(new File("doc/chenlb.blogjava.net.xls"));
                      JxlExcelWriter jxlExcelWriter 
          = new JxlExcelWriter();
                      jxlExcelWriter.writeExcel(out, datas, 
          new String[] {"Id""name"});
                      out.close();
                  } 
          catch (FileNotFoundException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  } 
          catch (IOException e) {
                      
          // TODO Auto-generated catch block
                      e.printStackTrace();
                  }
                  
              }

          posted on 2007-10-29 10:52 流浪汗 閱讀(5918) 評論(1)  編輯  收藏 所屬分類: JAVA/J2EE

          評論:
          # re: jxl 寫 excel 2012-03-31 14:46 | 大狗
          寫的非常好啊,很有用,內容簡練,不像網上別的例子寫了一大堆冗余的東西。  回復  更多評論
            
          主站蜘蛛池模板: 三穗县| 贺州市| 红原县| 浏阳市| 大埔县| 呼和浩特市| 康马县| 汕头市| 和平区| 宿迁市| 洪洞县| 清镇市| 洱源县| 渭南市| 太白县| 萨嘎县| 资阳市| 桑日县| 江津市| 泸溪县| 安庆市| 新民市| 尼勒克县| 杭锦后旗| 买车| 泸水县| 宣恩县| 湖州市| 手机| 云浮市| 红桥区| 资兴市| 尉氏县| 名山县| 涿鹿县| 新建县| 黔西县| 托克逊县| 延寿县| 东明县| 苍梧县|