AndroidJxl讀寫Excel

凌浩雨發表於2017-09-29

Jxl 包下載

Android Studio 依賴

    compile `net.sourceforge.jexcelapi:jxl:2.6.12`

本測試在Exlipse中, 由於Jxl的跨平臺性。

  1. 建立Excel表

/**
 * 建立Excel
 * Created by mazaiting on 2017/9/28.
 */
public class WriteExcel {
  /**Sheet表, Excel表中的底部的表名*/
  private WritableSheet mWritableSheet;
  /**Excel工作簿*/
  private WritableWorkbook mWritableWorkbook;
  
  public static void main(String[] args) throws WriteException, IOException {
    WriteExcel excel = new WriteExcel();
    excel.create("test");
    for (int i = 0; i < 10; i++) {
        excel.addString(0, i, "text"+i);
        excel.addString(1, i, "text"+i+"-1");
        excel.addString(2, i, "text"+i+"-2");
    }
    excel.close();
  }

  /**
   * 建立Sheet表
   * @param fileName 檔名
   * @return Sheet表
   */
  public WritableSheet create(String fileName){
    try {
      // 輸出Excel的路徑
      String filePath = "E:/"+fileName+".xls";
      // 新建一個檔案
      OutputStream os = new FileOutputStream(filePath);
      // 建立Excel工作簿
      mWritableWorkbook = Workbook.createWorkbook(os);
      // 建立Sheet表
      mWritableSheet =  mWritableWorkbook.createSheet("第一張工作表", 0);
      return  mWritableSheet;
    } catch (IOException e) {
      e.printStackTrace();
    }
    return null;
  }

  /**
   * 關閉工作簿
   * @throws IOException
   * @throws WriteException
   */
  public void close() throws IOException, WriteException {
    // 寫入資料
    mWritableWorkbook.write();
    // 關閉檔案
    mWritableWorkbook.close();
  }

  /**
   * 新增字串
   * @param col 列號
   * @param row 行號
   * @param text 文字
   * @throws WriteException
   */
  public void addString(int col, int row, String text) throws WriteException {
    if (null == mWritableSheet) return;
    Label label = new Label(col, row, text);
    mWritableSheet.addCell(label);
  }

  /**
   * 新增數字
   * @param col 列號
   * @param row 行號
   * @param num 數字
   * @throws WriteException
   */
  public void addInt(int col, int row, int num) throws WriteException {
    if (null == mWritableSheet) return;
    Number number = new Number(col, row, num);
    mWritableSheet.addCell(number);
  }
}
  1. 讀取Excel表

/**
 * 讀取Excel
 */
public class ReadExcel {
    
    public static void main(String[] args) {
        // 字元列表
        List<String> list = new ArrayList<String>();
        // 檔案路徑
        String filePath = "E:/test.xls";
        // 輸入流
        InputStream is = null;
        // Excel工作簿
        Workbook workbook = null;
        
        try {
            // 載入Excel檔案
            is = new FileInputStream(filePath);
            // 獲取workbook
            workbook = Workbook.getWorkbook(is);
        } catch (Exception e) {}
        
        // 獲取sheet, 如果你的workbook裡有多個sheet可以利用workbook.getSheets()方法來得到所有的
        Sheet sheet = workbook.getSheet(0);// 這裡只取得第一個sheet的值,預設從0開始
        System.out.println(sheet.getColumns());// 檢視sheet的列
        System.out.println(sheet.getRows());// 檢視sheet的行
        
        Cell cell = null;// 單個單元格
        // 開始迴圈,取得cell裡的內容,按具體型別來取
        // 這裡只取String型別
        for (int j = 0;j<sheet.getColumns();j++){
            StringBuffer sb = new StringBuffer();
            for (int i=0;i<sheet.getRows();i++){
                // 列,行
                cell = sheet.getCell(j, i);
                sb.append(cell.getContents());// 獲取單元格內容
                sb.append(",");// 將單元格的每行內容用逗號隔開
            }
            list.add(sb.toString());//將每行的字串用一個String型別的集合儲存。
        }
        
        workbook.close();// 關閉工作簿
        
        // 迭代集合檢視每行的資料
        for (String ss : list){
            System.out.println(ss);
        }
    }
}


相關文章