zoukankan      html  css  js  c++  java
  • 2. 导入

    2. 导入

    public static void main(String[] args) {
        String downloadPath = "存储路径";
        XSSFWorkbook xssfWorkbook = loadWorkBook(downloadPath);
        importOverseasLadingExcel(xssfWorkbook, orderFeeExportDto);
    }
    
    /**
     * URL转WorkBook
     */
    private XSSFWorkbook loadWorkBook(String url) throws Exception {
        InputStream inputStream = null;
        try {
            URL realUrl = new URL(url);
            if (url.startsWith("file:/")) {
                FileURLConnection httpUrl = (FileURLConnection) realUrl.openConnection();
                inputStream = httpUrl.getInputStream();
            } else {
                HttpURLConnection httpUrl = (HttpURLConnection) realUrl.openConnection();
                inputStream = httpUrl.getInputStream();
            }
    
            return new XSSFWorkbook(inputStream);
        } catch (Exception e) {
            throw e;
        } finally {
            if (inputStream != null) {
                try {
                    inputStream.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    
    
    /**
     * 导入
     */
    public void importOverseasLadingExcel(XSSFWorkbook wb, FinanceOrderFeeExportDto financeOrderFeeExportDto) {
        Sheet sheet = wb.getSheetAt(0);
        // 标题,也是要导入的字段
        Row rowHead = sheet.getRow(0);
        //行数
        int rowCount = sheet.getPhysicalNumberOfRows();
        //列数
        int columnCount = rowHead.getLastCellNum();
        // 头部
        List<String> headNames = new ArrayList<>();
        for (int i = 0; i < columnCount; i++) {
            String headName = rowHead.getCell(i).getStringCellValue();
            headNames.add(headName);
        }
    
        //将excel行数据转为对象
        List<OrderWorkDto> orderWorkDtoList = new ArrayList<OrderWorkDto>();
        for (int j = 1; j < rowCount; j++) {
            Row row = sheet.getRow(j);
            if (isBlankRow(row)) {
                continue;
            }
    
            OrderWorkDto orderWorkDto = new OrderWorkDto();
            for (int k = 0; k < columnCount - 1; k++) {
                String columeValue = transferCellType(row.getCell(k));
                if (k == 0) {
                    orderWorkDto.setDeliveryNumber(columeValue);
                } else if (k == 1) {
                    orderWorkDto.setPrice(columeValue);
                } else if (k == 2) {
                    orderWorkDto.setCuy(columeValue);
                } else if (k == 3) {
                    orderWorkDto.setAcction(columeValue);
                }
                orderWorkDto.setOperateId(financeOrderFeeExportDto.getOperateId());
            }
            orderWorkDtoList.add(orderWorkDto);
            //第10个保存一次
            if (orderWorkDtoList.size() % 10 == 0) {
                saveOrderWorkList(orderWorkDtoList);
                orderWorkDtoList = new ArrayList<OrderWorkDto>();
            }
        }
        //保存最后对象
        if (orderWorkDtoList.size() > 0) {
            saveOrderWorkList(orderWorkDtoList);
        }
    }
    
    public void saveOrderWorkList(List<OrderWorkDto> orderWorkDtoList) {
        financeOrderDao.saveOrderWorkList(orderWorkDtoList);
    }
    
    /**
     * 判断行是否为空
     */
    private static boolean isBlankRow(Row row) {
        boolean blank = true;
    
        Iterator<Cell> cellItr = row.iterator();
        while (cellItr.hasNext()) {
            Cell c = cellItr.next();
            if (c.getCellType() != HSSFCell.CELL_TYPE_BLANK) {
                blank = false;
                break;
            }
        }
        return blank;
    }
    
    /**
     * 单元格转字符串
     */
    private static String transferCellType(Cell cell) {
        if (cell == null) {
            return null;
        }
        cell.setCellType(Cell.CELL_TYPE_STRING);
        return cell.getStringCellValue();
    }
  • 相关阅读:
    JavaScript对象与JSON字符串的相互转换
    IE6下javascript:void(0)不可用的解决
    mybatis-spring集成:配置多数据库源中遇到的问题
    网易免费企业邮箱Foxmail设置方法
    ARM Linux 驱动Input子系统之按键驱动测试
    arm Linux 驱动LED子系统 测试
    AM335x内核模块驱动之LED
    ARM开发板搭建NFS网络文件共享方法
    AM335x开发板与PC机虚拟机建立tftp文件传输
    am335xSD卡启动--文件系统制作
  • 原文地址:https://www.cnblogs.com/yifanSJ/p/13305161.html
Copyright © 2011-2022 走看看