JXL工具包運用Excel

1.找到JXL.jar包,導入程序。

2.讀取Excel

 public static void readExcel() throws BiffException, IOException{
   //創建一個list 用來存儲讀取的內容
    List list = new ArrayList();
    Workbook rwb = null;
    Cell cell = null;
    
    //創建輸入流
    InputStream stream = new FileInputStream("d:\\testJXL.xls");
    
    //獲取Excel文件對象
    rwb = Workbook.getWorkbook(stream);
    
    //獲取文件的指定工作表 默認的第一個
    Sheet sheet = rwb.getSheet(0);  
   
    //行數(表頭的目錄不需要,從1開始)
    for(int i=0; i<sheet.getRows(); i++){
     
     //創建一個數組 用來存儲每一列的值
     String[] str = new String[sheet.getColumns()];
     
     //列數
     for(int j=0; j<sheet.getColumns(); j++){
     
      //獲取第i行,第j列的值
      cell = sheet.getCell(j,i);    
      str[j] = cell.getContents();
      
     }
     //把剛獲取的列存入list
     list.add(str);
    }
    for(int i=0;i<list.size();i++){
     String[] str = (String[])list.get(i);
     for(int j=0;j<str.length;j++){
      System.out.println(str[j]);
     }
    }
  }

3.寫入Excel

public static void writeExcel(){
   String[] title = {"編號","產品名稱","產品價格","產品數量","生產日期","產地","是否出口"};   
         try {   
             // 獲得開始時間   
             long start = System.currentTimeMillis();   
             // 輸出的excel的路徑   
             String filePath = "d:\\testJXL.xls";   
              // 創建Excel工作薄   
             WritableWorkbook wwb;   
              // 新建立一個jxl文件,即在d盤下生成testJXL.xls   
             OutputStream os = new FileOutputStream(filePath);   
             wwb=Workbook.createWorkbook(os);    
             // 添加第一個工作表並設置第一個Sheet的名字   
             WritableSheet sheet = wwb.createSheet("產品清單", 0);   
             Label label;   
             for(int i=0;i<title.length;i++){   
                 // Label(x,y,z) 代表單元格的第x+1列,第y+1行, 內容z   
                 // 在Label對象的子對象中指明單元格的位置和內容   
                 label = new Label(i,0,title[i]); 
                 label = new Label(i, 0, title[i], getHeader());
                 // 將定義好的單元格添加到工作表中   
                 sheet.addCell(label);   
             }   
             // 下面是填充數據   
              /*   
               * 保存數字到單元格,需要使用jxl.write.Number 
               * 必須使用其完整路徑,否則會出現錯誤 
              * */ 
            // 填充產品編號   
             jxl.write.Number number = new jxl.write.Number(0,1,20071001);   
             sheet.addCell(number);   
             // 填充產品名稱   
              label = new Label(1,1,"金鴿瓜子");   
             sheet.addCell(label);   
              /* 
             * 定義對於顯示金額的公共格式 
               * jxl會自動實現四捨五入 
              * 例如 2.456會被格式化爲2.46,2.454會被格式化爲2.45 
              * */ 
             jxl.write.NumberFormat nf = new jxl.write.NumberFormat("#,###.00");   
             jxl.write.WritableCellFormat wcf = new jxl.write.WritableCellFormat(nf);   
              // 填充產品價格   
             jxl.write.Number nb = new jxl.write.Number(2,1,200000.45,wcf);   
             sheet.addCell(nb);   
             // 填充產品數量   
              jxl.write.Number numb = new jxl.write.Number(3,1,200);   
             sheet.addCell(numb);   
             /* 
               * 定義顯示日期的公共格式 
             * 如:yyyy-MM-dd hh:mm 
              * */ 
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");   
             String newdate = sdf.format(new Date());   
             // 填充出產日期   
             label = new Label(4,1,newdate);   
             sheet.addCell(label);   
             // 填充產地   
              label = new Label(5,1,"陝西西安");   
             sheet.addCell(label);   
             /* 
              * 顯示布爾值 
              * */ 
             jxl.write.Boolean bool = new jxl.write.Boolean(6,1,true);   
             sheet.addCell(bool);   
              /* 
              * 合併單元格 
              * 通過writablesheet.mergeCells(int x,int y,int m,int n);來實現的 
               * 表示將從第x+1列,y+1行到m+1列,n+1行合併 
              *   
              * */ 
             sheet.mergeCells(0,3,2,3);   
             label = new Label(0,3,"合併了三個單元格");   
             sheet.addCell(label);   
             /* 
               *   
               * 定義公共字體格式 
               * 通過獲取一個字體的樣式來作爲模板 
              * 首先通過web.getSheet(0)獲得第一個sheet 
              * 然後取得第一個sheet的第二列,第一行也就是"產品名稱"的字體   
             * */ 
             CellFormat cf = wwb.getSheet(0).getCell(1, 0).getCellFormat();   
             WritableCellFormat wc = new WritableCellFormat();   
             // 設置居中   
              wc.setAlignment(Alignment.CENTRE);   
              // 設置邊框線   
            wc.setBorder(Border.ALL, BorderLineStyle.THIN);   
             // 設置單元格的背景顏色   
            wc.setBackground(jxl.format.Colour.RED);   
             label = new Label(1,5,"字體",wc);   
            sheet.addCell(label);   
  
             // 設置字體   
            jxl.write.WritableFont wfont = new jxl.write.WritableFont(WritableFont.createFont("隸書"),20);   
             WritableCellFormat font = new WritableCellFormat(wfont);   
             label = new Label(2,6,"隸書",font);   
              sheet.addCell(label);   
                
           // 寫入數據   
            wwb.write();   
             // 關閉文件   
             wwb.close();   
            long end = System.currentTimeMillis();   
             System.out.println("----完成該操作共用的時間是:"+(end-start)/1000);   
         } catch (Exception e) {   
             System.out.println("---出現異常---");   
              e.printStackTrace();   
        }   
 }

4.Excel樣式

  public static WritableCellFormat getHeader(){
   WritableFont font = new  WritableFont(WritableFont.TIMES, 10 ,WritableFont.BOLD);//定義字體
   try {
    font.setColour(Colour.BLUE);//藍色字體
   } catch (WriteException e1) {
    // TODO 自動生成 catch 塊
    e1.printStackTrace();
   }
   WritableCellFormat format = new  WritableCellFormat(font);
   try {
    format.setAlignment(jxl.format.Alignment.CENTRE);//左右居中
    format.setVerticalAlignment(jxl.format.VerticalAlignment.CENTRE);//上下居中
    format.setBorder(Border.ALL,BorderLineStyle.THIN,Colour.BLACK);//黑色邊框
    format.setBackground(Colour.YELLOW);//黃色背景
   } catch (WriteException e) {
    // TODO 自動生成 catch 塊
    e.printStackTrace();
   }
   return format;
  }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章