RuoYi/src/main/java/com/ruoyi/common/utils/ExcelImportUtils.java

79 lines
2.5 KiB
Java
Raw Normal View History

package com.ruoyi.common.utils;
import org.apache.poi.hssf.usermodel.HSSFDateUtil;
import org.apache.poi.ss.usermodel.Cell;
import java.text.DecimalFormat;
import java.util.Date;
/**
* 导入Excel工具类
*/
public class ExcelImportUtils {
/** 是否是2003的excel返回true是2003Excel文件**/
public static boolean isExcel2003(String filePath){
return filePath.matches("^.+\\.(?i)(xls)$");
}
/** 是否是2007以上的excel返回true是2007Excel文件**/
public static boolean isExcel2007(String filePath){
return filePath.matches("^.+\\.(?i)(xlsx)$");
}
/**
* 验证EXCEL文件
*
* @param filePath
* @return
*/
public static boolean validateExcel(String filePath) {
if (filePath == null || !(isExcel2003(filePath) || isExcel2007(filePath))) {
return false;
}
return true;
}
/**
* 获取单元格的值
* @param cell
* @return
*/
public static String getCellValue(Cell cell) {
String value = "";
if (cell != null) {
switch(cell.getCellTypeEnum()){
case NUMERIC:// 数字
value = cell.getNumericCellValue()+ " ";
if(HSSFDateUtil.isCellDateFormatted(cell)){
Date date = cell.getDateCellValue();
if(date != null){
value = DateUtils.parseDateToStr(DateUtils.YYYY_MM_DD,date); // 日期格式化
}else{
value = "";
}
}else {
// 解析cell时候 数字类型默认是double类型的 但是想要获取整数类型 需要格式化
value = new DecimalFormat("0").format(cell.getNumericCellValue());
}
break;
case STRING: // 字符串
value = cell.getStringCellValue();
break;
case BOOLEAN: // Boolean类型
value = cell.getBooleanCellValue()+"";
break;
case BLANK: // 空值
value = "";
break;
case ERROR: // 错误类型
value ="非法字符";
break;
default:
value = "未知类型";
break;
}
}
return value.trim();
}
}