1. 程式人生 > >Java讀取、寫入、處理Excel檔案中的資料

Java讀取、寫入、處理Excel檔案中的資料

 在日常工作中,我們常常會進行檔案讀寫操作,除去我們最常用的純文字檔案讀寫,更多時候我們需要對Excel中的資料進行讀取操作,本文將介紹Excel讀寫的常用方法,希望對大家學習Java讀寫Excel會有幫助。 

      在開始進行Java讀寫Excel前,我們需要先下一個jxl的jar包,這個jar包中提供了相關讀寫Excel的方法,在百度裡所搜一下jxl.jar下載就會出現很多下載地址了,這裡不再累述。隨後我們將jxl.jar放到classpath下或者在工程的buildpath中新增jxl.jar後,便可以開始Java讀寫Excel的神祕之旅了。

1、Java讀取Excel資料

首先,建立一個xls檔案(如:jxltest.xls),然後在檔案中新增一些資料,Excel檔案建立完成後,我們便可以開始寫程式碼讀取了:

程式碼如下:

  1. package jxl.zhanhj;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.IOException;  
  6. import java.io.InputStream;  
  7. import jxl.Sheet;  
  8. import
     jxl.Workbook;  
  9. import jxl.read.biff.BiffException;  
  10. publicclass GetExcelInfo {  
  11.     publicstaticvoid main(String[] args) {  
  12.         GetExcelInfo obj = new GetExcelInfo();  
  13.         // 此處為我建立Excel路徑:E:/zhanhj/studysrc/jxl下
  14.         File file = new File("E:/zhanhj/studysrc/jxl/getExcleinfo.xls");  
  15.         obj.readExcel(file);  
  16.     }  
  17.     // 去讀Excel的方法readExcel,該方法的入口引數為一個File物件
  18.     publicvoid readExcel(File file) {  
  19.         try {  
  20.             // 建立輸入流,讀取Excel
  21.             InputStream is = new FileInputStream(file.getAbsolutePath());  
  22.             // jxl提供的Workbook類
  23.             Workbook wb = Workbook.getWorkbook(is);  
  24.             // Excel的頁籤數量
  25.             int sheet_size = wb.getNumberOfSheets();  
  26.             for (int index = 0; index < sheet_size; index++) {  
  27.                 // 每個頁籤建立一個Sheet物件
  28.                 Sheet sheet = wb.getSheet(index);  
  29.                 // sheet.getRows()返回該頁的總行數
  30.                 for (int i = 0; i < sheet.getRows(); i++) {  
  31.                     // sheet.getColumns()返回該頁的總列數
  32.                     for (int j = 0; j < sheet.getColumns(); j++) {  
  33.                         String cellinfo = sheet.getCell(j, i).getContents();  
  34.                         System.out.println(cellinfo);  
  35.                     }  
  36.                 }  
  37.             }  
  38.         } catch (FileNotFoundException e) {  
  39.             e.printStackTrace();  
  40.         } catch (BiffException e) {  
  41.             e.printStackTrace();  
  42.         } catch (IOException e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.     }  
  46. }  

 上面這個例子是一個很簡單讀取Excel並將各單元格的資料列印到控制檯上,更多Excel操作方法,請參加jxl API。

下面我們再對上面的例子進行一個小小的擴充套件:

1、讀取一個目錄下的所有Excel檔案

2、讀取的每個Excel檔案的資料寫入到不同的txt中

程式碼如下:

  1. package jxl.zhanhj;  
  2. import java.io.File;  
  3. import java.io.FileInputStream;  
  4. import java.io.FileNotFoundException;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7. import java.io.InputStream;  
  8. import java.io.PrintWriter;  
  9. import jxl.Sheet;  
  10. import jxl.Workbook;  
  11. import jxl.read.biff.BiffException;  
  12. publicclass GetExcelInfo {  
  13.     publicstaticvoid main(String[] args) {  
  14.         GetExcelInfo obj = new GetExcelInfo();  
  15.         // 此處路徑指定到目錄而不是單個檔案
  16.         File file = new File("E:/zhanhj/studysrc/jxl");  
  17.         if (file.isDirectory()) {  
  18.             File[] files = file.listFiles();  
  19.             for (File f : files)  
  20.                 // 如果還存在子目錄則繼續讀取子目錄下的Excel檔案
  21.                 if (f.isDirectory()) {  
  22.                     File[] subfiles = f.listFiles();  
  23.                     for (File fi : subfiles) {  
  24.                         // 對檔案進行過濾,只讀取Excel檔案,非Excel檔案不讀取,否則會出錯
  25.                         if (fi.getName().indexOf(".xls") > 0) {  
  26.                             obj.readExcelWrite2TXT(fi);  
  27.                         }  
  28.                     }  
  29.                 } else {  
  30.                     // 對檔案進行過濾,只讀取Excel檔案,非Excel檔案不讀取,否則會出錯
  31.                     if (f.getName().indexOf(".xls") > 0) {  
  32.                         obj.readExcelWrite2TXT(f);  
  33.                     }  
  34.                 }  
  35.         }  
  36.     }  
  37.     // 去讀Excel的方法readExcel,該方法的入口引數為一個File物件
  38.     publicvoid readExcelWrite2TXT(File file) {  
  39.         // 建立檔案輸出流
  40.         FileWriter fw = null;  
  41.         PrintWriter out = null;  
  42.         try {  
  43.             // 指定生成txt的檔案路徑
  44.             String fileName = file.getName().replace(".xls""");  
  45.             fw = new FileWriter(file.getParent() + "/" + fileName + ".txt");  
  46.             out = new PrintWriter(fw);  
  47.             // 建立輸入流,讀取Excel
  48.             InputStream is = new FileInputStream(file.getAbsolutePath());  
  49.             // jxl提供的Workbook類
  50.             Workbook wb = Workbook.getWorkbook(is);  
  51.             // Excel的頁籤數量
  52.             int sheet_size = wb.getNumberOfSheets();  
  53.             for (int index = 0; index < sheet_size; index++) {  
  54.                 // 每個頁籤建立一個Sheet物件
  55.                 Sheet sheet = wb.getSheet(index);  
  56.                 // sheet.getRows()返回該頁的總行數
  57.                 for (int i = 0; i < sheet.getRows(); i++) {