为什么80%的码农都做不了架构师?>>>
xlsx2007 和 xls2003 两种格式需要使用两种方法
XSSF HSSF
大数据excel读取参考 http://www.iteye.com/topic/624969
poi-3.9.jar poi-ooxml-3.9.jar poi-ooxml-schemas-3.9.jar xmlbeans-2.3.0.jar
小数据excel读取
package com.aibi.cmdc.webService;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
public class ExcelUtil {
public static String getCellValue(Cell cell) {
if (cell.getCellType() == cell.CELL_TYPE_BOOLEAN) {
// 返回布尔类型的值
return String.valueOf(cell.getBooleanCellValue());
} else if (cell.getCellType() == cell.CELL_TYPE_NUMERIC) {
// 返回数值类型的值
return String.valueOf(cell.getNumericCellValue());
} else {
// 返回字符串类型的值
return String.valueOf(cell.getStringCellValue());
}
}
public static List<Map<String, String>> readExcel(String pathName) {
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
List<String> keys = new ArrayList<String>();
try {
InputStream is = new FileInputStream(pathName);
XSSFWorkbook wk = new XSSFWorkbook(is);
XSSFSheet hssfSheet = wk.getSheetAt(0);// 取得 第一个sheet页
XSSFRow titleRow = hssfSheet.getRow(4);// 取得表头
for (int cellIndex = 0; cellIndex < titleRow.getLastCellNum(); cellIndex++) {
Cell cell = titleRow.getCell(cellIndex);
if (cell != null) {
String cellValue = getCellValue(cell);
System.out.println(cellValue);
keys.add(cellValue);
}
}
// 循环行Row
for (int rowNum = 4; rowNum <= hssfSheet.getLastRowNum(); rowNum++) {
XSSFRow hssfRow = hssfSheet.getRow(rowNum);
if (hssfRow == null) {
continue;
}
Map<String, String> rowMap = new HashMap<String, String>();
for (int i = 0; i < hssfRow.getLastCellNum(); i++) {
Cell cell = hssfRow.getCell(i);
if (cell != null) {
rowMap.put(keys.get(i), getCellValue(cell));
}
}
list.add(rowMap);
}
} catch (Exception e) {
e.printStackTrace();
}
return list;
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
// String pathName ="e:\\11.xlsx";
String pathName = "e:\\aa2.xlsx";
List<Map<String, String>> list = readExcel(pathName);
System.out.println(list);
}
}