使用POI讀取和寫出EXCEL文件(寫出部分待完善)

Excel文件在工作中運行非常多,有時候需要我們結合數據讀取和寫出相應的數據,在這裏寫一個簡單的demo方便以後的調用和學習:


讀取文件部分:


首先,導入相應的JAR包

1、dom4j-1.6.1.jar  (一定要導入該包,不然POI解析的時候會報錯) 

2、poi-3.8-20120326.jar

3、poi-ooxml-3.8-20120326.jar

4、poi-ooxml-schemas-3.8-20120326.jar

5、xmlbeans-2.3.0.jar


其次,代碼部分

1、功能代碼

public class ImportExcel {

	/**
	 * 根據文件路徑獲取Excel中的數據
	 * 
	 * @param FilePath	文件路徑
	 * @param num	表頭的數量(也就是多少列)           
	 * 
	 */
	public static void getDataFromExcel(String FilePath , int num) {

		// 判斷是否是excel文件
		if (!FilePath.endsWith(".xls") && !FilePath.endsWith(".xlsx")) {
			System.out.println("導入的文件不是Excel文件類型!");
		}

		FileInputStream fis = null;
		Workbook workbook = null;
		// 構建一個輸入流
		try {
			fis = new FileInputStream(FilePath);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}

		try {
			if (FilePath.endsWith(".xls")) {
				// 獲取2003版的EXCEL文件
				workbook = new HSSFWorkbook(fis);
			} else {
				// 獲取2007版的EXCEL文件
				workbook = new XSSFWorkbook(fis);
			}
		} catch (IOException e) {
			e.printStackTrace();
		}

		// 獲取一個EXCEL工作表
		Sheet sheet = workbook.getSheetAt(0);
		// 獲取工作表表頭
		Row rowHead = sheet.getRow(0);
		// 判斷表頭是否正確
		if (rowHead.getPhysicalNumberOfCells() != num) {
			System.out.println("表頭數據不正確");
		} else {
			// 獲取數據的總行數
			int rowNum = sheet.getLastRowNum();
			// 獲取到的屬性
			String name = null;
			int age = 0;
			// 獲取EXCEL表中的所有數據
			for (int i = 1; i <= rowNum; i++) {
				// 獲取第i行的數據
				Row row = sheet.getRow(i);
				// 獲取第i行的第0列的數據
				Cell cell = row.getCell((short) 0);
				name = cell.getStringCellValue().toString();
				// 獲取第i行的第1列的數據
				cell = row.getCell((short) 1);
				age = (int) cell.getNumericCellValue();
				System.out.println("name:" + name + "age:" + age);
			}
		}
	}
}
2、測試代碼

public class Test {
	
	public static void main(String[] args) {
		String FilePath = "D:/studentInfo.xlsx";

		 ImportExcel.getDataFromExcel(FilePath,2);
	
	}
}

3、Excel中的數據

name age
張三 21
李四 22
王五 23
趙六 21

4、輸出情況

name:張三   age:21
name:李四   age:22
name:王五   age:23
name:趙六   age:21

最後,讀取部分總結:

1、由於excel版本的不同,主要是2003和2007後綴的問題,解析的類也不一樣,

xls 版本解析類:workbook = new HSSFWorkbook(fis);

xlsx 版本解析類:workbook = new XSSFWorkbook(fis);

所以一定要判斷是哪種後綴,不然會報錯

2、在讀取數據的循環當中,注意數據類型,比如有列名,從第一行開始循環的話,因爲有age不能轉換成int類型,所以會報錯。




發佈了22 篇原創文章 · 獲贊 35 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章