施用Java POI 解析EXCLE
使用Java POI 解析EXCLE
package com.ceshi; import java.io.FileInputStream; import java.util.ArrayList; import java.util.List; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.hssf.usermodel.HSSFRow; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.poifs.filesystem.POIFSFileSystem; public class DomExcel { /** * 解析EXCLE * @param is * @return */ public static List<String[]> parseExcel(FileInputStream is){ List<String[]> list = null ; try { POIFSFileSystem fs = new POIFSFileSystem(is); // 创建工作簿 HSSFWorkbook workBook = new HSSFWorkbook(fs); //储存Excle的数据 list = new ArrayList<String[]>(); // 获得Excel中工作表个数 //System.out.println("工作表个数 :" + workBook.getNumberOfSheets()); for (int i = 0; i < workBook.getNumberOfSheets(); i++) { //System.out.println("第" + i + "个工作表名称:" + workBook.getSheetName(i)); // 创建工作表 HSSFSheet sheet = workBook.getSheetAt(i); int rows = sheet.getPhysicalNumberOfRows(); // 获得行数 if (rows > 0) { sheet.getMargin(HSSFSheet.TopMargin); for (int j = 0; j < rows; j++) { // 行循环 HSSFRow row = sheet.getRow(j); if (row != null) { int cells = row.getLastCellNum(); // 获得列数 String[] fieldValue = new String[cells]; for (short k = 0; k < cells; k++) { // 列循环 HSSFCell cell = row.getCell(k); String value = ""; if (cell != null) { switch (cell.getCellType()) { case HSSFCell.CELL_TYPE_NUMERIC: // 数值型 if (HSSFDateUtil.isCellDateFormatted(cell)) { // 如果是date类型则,获取该cell的date值 value = HSSFDateUtil.getJavaDate(cell.getNumericCellValue()).toString(); } else { // 纯数字 value = String.valueOf(cell.getNumericCellValue()); } break; //此行表示单元格的内容为string类型 case HSSFCell.CELL_TYPE_STRING: // 字符串型 value = cell.getStringCellValue(); break; case HSSFCell.CELL_TYPE_FORMULA:// 公式型 // 读公式计算值 value = String.valueOf(cell.getNumericCellValue()); if (value.equals("NaN")) { // 如果获取的数据值为非法值,则转换为获取字符串 value = cell.getStringCellValue(); } break; case HSSFCell.CELL_TYPE_BOOLEAN:// 布尔 value = ""+ cell.getBooleanCellValue(); break; //此行表示该单元格值为空 case HSSFCell.CELL_TYPE_BLANK: // 空值 value = ""; break; case HSSFCell.CELL_TYPE_ERROR: // 故障 value = ""; break; default: value = cell.getStringCellValue(); } } fieldValue[k] = value; } list.add(fieldValue); } } } } } catch (Exception ex) { ex.printStackTrace(); } return list; } }