1. 程式人生 > >java 操作 poi 解析、讀取 Excel 檔案

java 操作 poi 解析、讀取 Excel 檔案

讀取Excel 我這裡是用的POI 的jar包

dom4j-1.6.1.jar         poi-3.10.1-20140818.jar        poi-excelant-3.10.1-20140818.jar    xmlbeans-2.6.0.jar

poi-ooxml-3.10.1-20140818.jar       poi-ooxml-schemas-3.10.1-20140818.jar       poi-scratchpad-3.10.1-20140818.jar

以下是maven地址:

<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.10.1</version> 
</dependency>


<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>3.10.1</version>
</dependency>


<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-excelant</artifactId>
<version>3.10.1</version>
</dependency>

啥也不說了。。。 直接上程式碼 

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;


public class ExcelRead {
	
	public static void main(String[] args) {
		Map<String,Object> map=readExcelCreateCategory("F:\\book.xlsx");
	}
	
	/**
	 * 方法描述:  讀取Excel 檔案  並 進行解析
	 * @param fileName  Excel 地址
	 * @author Andy  2014-10-29  下午02:41:29
	 */
	public static Map<String,Object> readExcelCreateCategory(String fileName){
		Map<String,Object> map=new HashMap<String, Object>();
		File file = new File(fileName);
		if(file!=null){
	        try {  
	            InputStream input = new FileInputStream(file);  //建立輸入流  
	            Workbook wb  = null; 
	            wb =new XSSFWorkbook(input);
	            //wb = new HSSFWorkbook(input);  // office 2003版本、WPS版本  用這個方法解析
//	            System.out.println("表單數量:"+wb.getNumberOfSheets());
	            if(wb.getNumberOfSheets()>0){ //表單數 必須大於 0
//	            	System.out.println("表單名稱"+wb.getSheetName(0));//獲取第一個表單的 名稱
            		Sheet sheet = wb.getSheetAt(0);     //獲得第一個表單  
		            Iterator<Row> rows = sheet.rowIterator(); //獲得第一個表單的迭代器  
		            while (rows.hasNext()) {  
		                Row row = rows.next();  //獲得行資料  
//			            System.out.println("Row #" + row.getRowNum());  //獲得行號從0開始  
		                Iterator<Cell> cells = row.cellIterator();    //獲得第一行的迭代器  
		                while (cells.hasNext()) {  
		                    Cell cell = cells.next();
//			                System.out.print("Cell #" + cell.getColumnIndex()); //獲取 列 數
		                    Object obj=null; 
	                    	switch (cell.getCellType()) {   //根據cell中的型別來輸出資料  
			                    case HSSFCell.CELL_TYPE_NUMERIC:  
			                    	obj=cell.getNumericCellValue();  
			                        break;  
			                    case HSSFCell.CELL_TYPE_STRING:  
			                    	obj=cell.getStringCellValue();  
			                        break;  
			                    case HSSFCell.CELL_TYPE_BOOLEAN:  
			                    	obj=cell.getBooleanCellValue();  
			                        break;  
			                    case HSSFCell.CELL_TYPE_FORMULA:  
			                    	obj=cell.getCellFormula();  
			                        break;  
			                    default:  
			                    	obj="unsuported sell type";  
			                    break;  
		                    }
	                    	System.out.println(obj.toString());
		                }
		            }
	            }else{
	            	map.put("status", "false");
            		map.put("info", "表單數不能為0!");
	            }
	        } catch (IOException ex) {  
	            ex.printStackTrace();  
	        }  
		}
		return map;
	}
}