話不多說,開整!
使用 Workbook 讀取Excel
包:jxl-2.6.12.jar
重點不是下面的一堆代碼,是裏面的方法,
- 獲取頁籤的數量: int sheet_size = wb.getNumberOfSheets();
- 每個頁籤創建一個Sheet對象: Sheet sheet = wb.getSheet(index);
- 獲取總行數: int rows = sheet.getRows();
- 獲取總列數:int columns = sheet.getColumns();
- 獲取表格中的數據 String cellinfo = sheet.getCell(j, i).getContents();
注意:我這裏因爲項目需要,是一列一列讀取的,需要一行一行讀取的小夥伴,請使用上面的方法自行編寫即可
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import jxl.Sheet;
import jxl.Workbook;
import jxl.read.biff.BiffException;
public class ReadExcel {
// 去讀Excel的方法readExcel,該方法的入口參數爲一個File對象
@SuppressWarnings({ "rawtypes", "unchecked", "unused" })
public static List<List> readExcel(File file) {
try {
// 創建輸入流,讀取Excel
InputStream is = new FileInputStream(file.getAbsolutePath());
// jxl提供的Workbook類
Workbook wb = Workbook.getWorkbook(is);
// Excel的頁籤數量
int sheet_size = wb.getNumberOfSheets();
for (int index = 0; index < sheet_size; index++) {
List<List> outerList = new ArrayList<List>();
// 每個頁籤創建一個Sheet對象
Sheet sheet = wb.getSheet(index);
// sheet.getRows()返回該頁的總行數
for (int i = 0; i < sheet.getRows(); i++) {
List innerList = new ArrayList();
// sheet.getColumns()返回該頁的總列數
for (int j = 0; j < sheet.getColumns(); j++) {
String cellinfo = sheet.getCell(j, i).getContents();
// if (cellinfo.isEmpty()) {
// continue;
// }
innerList.add(cellinfo);
}
outerList.add(i, innerList);
}
return outerList;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (BiffException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}