Excel导入获取指定表格的数据

目录

    • 背景
    • 实现

背景

前几天来了一个比较奇怪的需求,就excel导入的模板各长各的,不像是平时数据数据导入的格式,那没办法,按照需求做吧,先看一下这个表格长啥样
Excel导入获取指定表格的数据_第1张图片
这还是改了一版的样子了,上一版连表头都想变,我TM(小声bb)

实现

OK,既然确定了模板,那就开搞,经过确认,这上面几个数据都是固定的,也就是说只需要取第二列(B列)和第13列(N)列的数据
不多bb,直接上代码,主要还是操作了一下原生的poi

private Result<?> addOrderImport(SalesOrder order, MultipartFile file, List<OrderImport> list, List<SalesOrderlist> addList) throws IOException {
        //生成XSSFWorkbook工作簿
        Workbook workbook = new XSSFWorkbook(file.getInputStream());
        //获取第一个sheet
        Sheet sheetAt = workbook.getSheetAt(0);
        //合同号
        String contract = sheetAt.getRow(0).getCell(1).getStringCellValue();
        //下定日期
        Date orderDate = sheetAt.getRow(1).getCell(1).getDateCellValue();
        //包装要求
        String packingReq = sheetAt.getRow(2).getCell(1).getStringCellValue();
        //备注
        String remark = sheetAt.getRow(3).getCell(1).getStringCellValue();
        //单位
        String unit = sheetAt.getRow(1).getCell(13).getStringCellValue();
        //包装规则
        String packingRule = sheetAt.getRow(2).getCell(13).getStringCellValue();
        //交期
        Date deliveryDate = sheetAt.getRow(3).getCell(13).getDateCellValue();

        //型号
        String model = null;
        //循环添加到addList中
        for (OrderImport item : list) {
            //获取型号
            model = item.getModel() != null ? item.getModel() : model;
            if (Strings.isEmpty(item.getMnum())) {
                continue;
            }
            //数量不为空
            SalesOrderlist orderDetail = new SalesOrderlist();
            BeanUtils.copyProperties(item, orderDetail);

            //单位处理(如果单位是千件,赋值给数量,自动算出重量;如果单位是公斤,赋值给重量,自动算出数量)
           //。。。
        }

        return Result.OK();
    }

主要还是利用流创建XSSFWorkbook,然后父类为Workbook,ALT+回车会自动创建XSSFWorkbook的父类,需要修改一下
getSheetAt(0)获取第一个sheet工作簿在这里插入图片描述
getRow(0):获取工作簿的第一行
getCell(1):获取第二列
getStringCellValue():返回字符串类型的数据
getDateCellValue():返回日期格式数据

然后后面的子表明细就简单了,就利用你所使用的poi工具的获取一下dto的数据进行转换就好了,修改一下第几行就行了

你可能感兴趣的:(excel)