java 操作 poi 解析、讀取 Excel 檔案
阿新 • • 發佈:2019-01-23
讀取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; } }