public Result analyzingXXXExcel(MultipartFile file) {
// 如果文件为空,返回
if (file.isEmpty()) {
return Result.failure(ResultCode.FILE_IS_EMPTY);
}
// 定义输入流
InputStream inputStream = null;
try {
inputStream = file.getInputStream();
// 利用输入流获取Workbook对象
Workbook workbook = WorkbookFactory.create(inputStream);
// 获取第一个工作簿
Sheet sheet = workbook.getSheetAt(0);
// 获取总列数
int cols = sheet.getRow(0).getPhysicalNumberOfCells();
// 判断总列数是否一致
if (cols != MOLD_LIST_DETAILS_EXCEL_COL_NUM) {
return Result.failure(ResultCode.EXCEL_HEADER_COL_NUM_INCONSISTENT);
}
// 设置集合用于存储结果
List<XXX> list = new ArrayList<>();
// 获取总行数
int rows = sheet.getPhysicalNumberOfRows();
// 从第三行正文开始
for (int i = 2; i < rows; i++) {
// 获取遍历到的行
Row row = sheet.getRow(i);
// 遍历每一个单元格,填充XXX属性值
XXX xxx= fillXXX(row);
// 添入集合
list.add(xxx);
}
// 返回集合
return Result.success(list);
} catch (IOException | InvalidFormatException e) {
log.error(ResultCode.IO_FAIL.message(), e);
} finally {
// 关闭流
if (inputStream != null) {
try {
inputStream.close();
} catch (IOException e) {
log.error(ResultCode.IO_FAIL.message(), e);
}
}
}
// 默认,返回失败
return Result.failure(ResultCode.ANALYZING_MOLD_LIST_DETAILS_EXCEL_FAIL);
}
// 遍历每一个单元格,填充XXX属性值
private XXX fillXXX(Row row) {
// 定义一个XXX对象
XXX xxx= new XXX();
// 遍历每一个单元格,填充XXX属性值
// 下面这三个获取单元格值的,字符串的这个还需要通用校验单位格类型的方法
// 字符串类型
xxx.set1(row.getCell(0).getStringCellValue());
// int类型
xxx.set2(BigDecimal.valueOf(row.getCell(5).getNumericCellValue()).intValue());
// BigDecimal类型
xxx.set3(BigDecimal.valueOf(row.getCell(6).getNumericCellValue()));
// 返回
return xxx;
}
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.DataFormatter;
import java.text.SimpleDateFormat;
/**
* Excel工具类
*
* @author z00050365
* @since 2023-04-06
*/
public class ExcelUtil {
/**
* 获取单元格值-字符串
*
* @param cell 单元格
* @return String
*/
public static String getCellValue(Cell cell) {
if (cell == null) {
return "";
}
String cellValue = "";
// 以下是判断数据的类型
switch (cell.getCellTypeEnum()) {
case NUMERIC: // 数字
if (org.apache.poi.ss.usermodel.DateUtil.isCellDateFormatted(cell)) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
cellValue = sdf.format(org.apache.poi.ss.usermodel.DateUtil.getJavaDate(cell.getNumericCellValue())).toString();
} else {
DataFormatter dataFormatter = new DataFormatter();
cellValue = dataFormatter.formatCellValue(cell);
}
break;
case STRING: // 字符串
cellValue = cell.getStringCellValue();
break;
case BOOLEAN: // Boolean
cellValue = cell.getBooleanCellValue() + "";
break;
case FORMULA: // 公式
cellValue = cell.getCellFormula() + "";
break;
case BLANK: // 空值
cellValue = "";
break;
case ERROR: // 故障
cellValue = "非法字符";
break;
default:
cellValue = "未知类型";
break;
}
return cellValue;
}
}
解析Excel文件
于 2023-03-22 19:51:23 首次发布