poi导入导出excel实现层

该代码实现了一个功能,从上传的Excel文件中读取数据,并进行处理。首先检查文件是否存在且不为空,然后根据文件类型(xls或xlsx)创建Workbook对象。遍历工作表的每一行,将数据映射到ProductVirtual对象中,包括productId、cardNo、cardPwd、orderId、uid和cardType等字段,最后将对象插入数据库。此过程使用了HSSFWorkbook和XSSFWorkbook处理不同版本的Excel,getRString和getRInt方法用于获取单元格的字符串和整数值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@Override
@Transactional
public boolean input(MultipartFile multipartFile, HttpServletResponse response) {

    if (null == multipartFile || multipartFile.isEmpty()) {
        throw new CrmebException("上传的文件对象不存在...");
    }

    Workbook workbook = null;
    String filename = multipartFile.getOriginalFilename();
    try {
        InputStream inp =  multipartFile.getInputStream();
        if (filename.endsWith("xls")){
            //2003
        workbook = new HSSFWorkbook(inp);
        }else if(filename.endsWith("xlsx")){
            //2007
        workbook = new XSSFWorkbook(inp);
        }
    } catch (IOException e ) {
        throw new CrmebException("获取文件信息失败");
    }
    Sheet sheet1 = workbook.getSheetAt(0);
    ProductVirtual productVirtual = new ProductVirtual();
    for (int i = 1; i <= sheet1.getLastRowNum(); i++) {
            Row row = sheet1.getRow(i);
        productVirtual.setProductId(getRInt(row.getCell(1)));
        productVirtual.setCardNo(getRString(row.getCell(2)));
        productVirtual.setCardPwd(getRString(row.getCell(3)));
        productVirtual.setOrderId(getRString(row.getCell(4)));
        productVirtual.setUid(getRInt(row.getCell(5)));
        productVirtual.setCardType(getRInt(row.getCell(6)));
        productVirtual.setCreateTime(new Date());
    }
    productVirtualDao.insert(productVirtual);

    return true;

}
private String getRString(Cell cell) {
    if (cell == null) {
        return "";
    } else {
        if (cell.getCellTypeEnum().toString().equals("STRING")) {
            return cell.getStringCellValue();
        } else {
            return String.valueOf(cell.getNumericCellValue());
        }
    }
}

private int getRInt(Cell cell) {
    if (cell == null) {
        return -1;
    } else {
        if (cell.getCellTypeEnum().toString().equals("STRING")) {
            try {
                return Integer.parseInt(cell.getStringCellValue());
            } catch (Exception e) {
                return -2;
            }
        } else {
            return (int) cell.getNumericCellValue();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值