//package cn.wisenergy.common.utils;
//
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.poi.hssf.usermodel.HSSFDataFormat;
//import org.apache.poi.hssf.usermodel.HSSFDateUtil;
//import org.apache.poi.hssf.usermodel.HSSFWorkbook;
//import org.apache.poi.ss.usermodel.*;
//import org.apache.poi.xssf.usermodel.XSSFWorkbook;
//import org.apache.xmlbeans.impl.piccolo.io.FileFormatException;
//import org.springframework.web.multipart.MultipartFile;
//
//import java.io.FileInputStream;
//import java.io.FileNotFoundException;
//import java.io.IOException;
//import java.io.InputStream;
//import java.text.DecimalFormat;
//import java.text.SimpleDateFormat;
//import java.util.ArrayList;
//import java.util.Date;
//import java.util.List;
//
//public class ExcelUtils {
//
//
//	private static final String EXTENSION_XLS = "xls";
//	private static final String EXTENSION_XLSX = "xlsx";
//
//
//	/**
//	 * 判断EXCEL版本
//	 *
//	 * @param in
//	 * @param filename
//	 * @return
//	 * @throws IOException
//	 */
//	public static Workbook getWorkbook(InputStream in, String filename) throws IOException {
//		Workbook wb = null;
//		if (filename.endsWith(EXTENSION_XLS)) {
//			wb = new HSSFWorkbook(in);//Excel 2003
//		} else if (filename.endsWith(EXTENSION_XLSX)) {
//			wb = new XSSFWorkbook(in);//Excel 2007
//		}
//		return wb;
//	}
//
//
//	/**
//	 * 文件校验是否是excel
//	 *
//	 * @param filePath
//	 * @throws FileNotFoundException
//	 * @throws FileFormatException
//	 */
//	public static void preReadCheck(String fileName) throws FileNotFoundException,
//			FileFormatException {
//		// 常规检查
//		if (StringUtils.isBlank(fileName)) {
//			throw new FileNotFoundException("传入的文件不存在：" + fileName);
//		}
//
//		if (!fileName.endsWith(EXTENSION_XLS) && !fileName.endsWith(EXTENSION_XLSX)) {
//			throw new FileFormatException("传入的文件不是excel");
//		}
//	}
//
//
//	/**
//	 * 读取EXCEL
//	 *
//	 * @param filePath
//	 * @throws FileNotFoundException
//	 * @throws FileFormatException
//	 */
//	public static List<List<String>> readExcel(MultipartFile file) throws FileNotFoundException, FileFormatException {
//		// 检查
//		preReadCheck(file.getOriginalFilename());
//		// 获取workbook对象
//		Workbook workbook = null;
//		/*InputStream is = new FileInputStream(filePath);*/
//		List<List<String>> result = new ArrayList<List<String>>();
//		try {
//			workbook = getWorkbook(file.getInputStream(), file.getOriginalFilename());
//			// workbook = WorkbookFactory.create(is);
//
//			int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量
//			// 读文件 一个sheet一个sheet地读取
//			for (int numSheet = 0; numSheet < sheetCount; numSheet++) {
//				Sheet sheet = workbook.getSheetAt(numSheet);
//				if (sheet == null) {
//					continue;
//				}
//
//				int firstRowIndex = sheet.getFirstRowNum();
//				int lastRowIndex = sheet.getLastRowNum();
//
//				if (firstRowIndex != lastRowIndex && lastRowIndex != 0) {
//
//					// 读取数据行
//					for (int rowIndex = firstRowIndex + 1; rowIndex <= lastRowIndex; rowIndex++) {
//						Row currentRow = sheet.getRow(rowIndex);// 当前行
//						int firstColumnIndex = currentRow.getFirstCellNum(); // 首列
//						int lastColumnIndex = currentRow.getLastCellNum();// 最后一列
//						List<String> rowList = new ArrayList<String>();
//						for (int columnIndex = firstColumnIndex; columnIndex < lastColumnIndex; columnIndex++) {
//							Cell currentCell = currentRow.getCell(columnIndex);// 当前单元格
//
//							String currentCellValue = getCellValue(currentCell, true);// 当前单元格的值
//							rowList.add(currentCellValue);
//						}
//
//						//行为空的不读
//						Boolean flag = false;
//						for (String str : rowList) {
//							if (!StringUtils.isBlank(str)) {
//								flag = true;
//								break;
//							}
//						}
//						if (flag) {
//							result.add(rowList);
//						}
//					}
//				}
//
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//		}
//		return result;
//	}
//
//	public static List<List<String>> readInlandCompare(String filePath, Integer startSheet, Integer endSheet) throws FileNotFoundException, FileFormatException {
//		// 检查
//		preReadCheck(filePath);
//		// 获取workbook对象
//		Workbook workbook = null;
//		InputStream is = new FileInputStream(filePath);
//		List<List<String>> result = new ArrayList<List<String>>();
//		try {
//			workbook = getWorkbook(is, filePath);
//			// workbook = WorkbookFactory.create(is);
//
//			int sheetCount = workbook.getNumberOfSheets();  //Sheet的数量
//			// 读文件 一个sheet一个sheet地读取
//			for (int numSheet = startSheet; numSheet < endSheet; numSheet++) {
//				Sheet sheet = workbook.getSheetAt(numSheet);
//				if (sheet == null) {
//					continue;
//				}
//
//				int firstRowIndex = sheet.getFirstRowNum();
//				int lastRowIndex = sheet.getLastRowNum();
//
//				if (firstRowIndex != lastRowIndex && lastRowIndex != 0) {
//
//					// 读取数据行
//					for (int rowIndex = firstRowIndex + 1; rowIndex <= lastRowIndex; rowIndex++) {
//						Row currentRow = sheet.getRow(rowIndex);// 当前行
//						int firstColumnIndex = currentRow.getFirstCellNum(); // 首列
//						int lastColumnIndex = currentRow.getLastCellNum();// 最后一列
//						List<String> rowList = new ArrayList<String>();
//						for (int columnIndex = firstColumnIndex; columnIndex < lastColumnIndex; columnIndex++) {
//							Cell currentCell = currentRow.getCell(columnIndex);// 当前单元格
//
//							String currentCellValue = getCellValue(currentCell, true);// 当前单元格的值
//							rowList.add(currentCellValue);
//						}
//						//行为空的不读
//						Boolean flag = false;
//						for (String str : rowList) {
//							if (!StringUtils.isBlank(str)) {
//								flag = true;
//								break;
//							}
//						}
//						if (flag) {
//							result.add(rowList);
//						}
//					}
//				}
//
//			}
//		} catch (Exception e) {
//			e.printStackTrace();
//		} finally {
//		}
//		return result;
//	}
//
//	/**
//	 * 取单元格的值
//	 *
//	 * @param cell       单元格对象
//	 * @param treatAsStr 为true时，当做文本来取值 (取到的是文本，不会把“1”取成“1.0”)
//	 * @return
//	 */
//	public static String getCellValue(Cell cell, boolean treatAsStr) {
//		if (cell == null) {
//			return "";
//		}
//
//       /* if (treatAsStr) {
//            // 虽然excel中设置的都是文本，但是数字文本还被读错，如“1”取成“1.0”
//            // 加上下面这句，临时把它当做文本来读取
//            cell.setCellType(Cell.CELL_TYPE_STRING);
//        }*/
//		//SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");
//
//		String cellValue = null;
//		int cellType = cell.getCellType();
//		switch (cellType) {
//			case Cell.CELL_TYPE_STRING: // 文本
//				cellValue = cell.getStringCellValue();
//				break;
//			case Cell.CELL_TYPE_NUMERIC: // 数字、日期
//				if (HSSFDateUtil.isCellDateFormatted(cell)) {// 处理日期格式、时间格式
//					SimpleDateFormat sdf = null;
//					if (cell.getCellStyle().getDataFormat() == HSSFDataFormat
//							.getBuiltinFormat("h:mm")) {
//						sdf = new SimpleDateFormat("HH:mm:ss");
//					} else {// 日期
//						sdf = new SimpleDateFormat("yyyy-MM-dd");
//					}
//					Date date = cell.getDateCellValue();
//					return sdf.format(date);
//				} else if (cell.getCellStyle().getDataFormat() == 58) {
//					// 处理自定义日期格式：m月d日(通过判断单元格的格式id解决，id的值是58)
//					SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//					double value = cell.getNumericCellValue();
//					Date date = org.apache.poi.ss.usermodel.DateUtil
//							.getJavaDate(value);
//					return sdf.format(date);
//				} else {
//					double value = cell.getNumericCellValue();
//					CellStyle style = cell.getCellStyle();
//					DecimalFormat format = new DecimalFormat();
//					String temp = style.getDataFormatString();
//					// 单元格设置成常规
//					if (temp.equals("General")) {
//						format.applyPattern("#");
//					}
//					return format.format(value);
//				}
//
//			case Cell.CELL_TYPE_BOOLEAN: // 布尔型
//				cellValue = String.valueOf(cell.getBooleanCellValue());
//				break;
//			case Cell.CELL_TYPE_BLANK: // 空白
//				cellValue = cell.getStringCellValue();
//				break;
//			case Cell.CELL_TYPE_ERROR: // 错误
//				cellValue = "错误";
//				break;
//			case Cell.CELL_TYPE_FORMULA: // 公式
//               /* try {
//                    cellValue = cell.getStringCellValue();
//                } catch (IllegalStateException e) {
//                    cellValue = String.valueOf(cell.getNumericCellValue());
//                }*/
//				try {
//					cellValue = String.valueOf(cell.getNumericCellValue());
//				} catch (IllegalStateException e) {
//					cellValue = String.valueOf(cell.getRichStringCellValue());
//				}
//				break;
//			default:
//				cellValue = "错误";
//		}
//		return cellValue;
//	}
//
//
//}
