• java实现的Excel批量导入


       1.导入 Maven

     <dependency>
        <groupId>org.jeecg</groupId>
        <artifactId>easypoi-base</artifactId>
        <version>2.3.1</version>
    </dependency>

    2.Controller代码

    @RequestMapping(value = "importPsd")
    public String importPsd(MultipartFile file,HttpServletRequest request, HttpServletResponse response, Model model ,RedirectAttributes redirectAttributes) throws Exception {
    syPsyhPsdService.importPsd(file);
    return "导入成功跳转的页面";
    }

    3.Service代码

       /**
         * 批量导入(批量添加)
         */

       private static final String XLS = "xls";
       private static final String XLSK = "xlsx";  //定义全局的常量值

      @Transactional(readOnly = false)
      public void importPsd(MultipartFile file) throws Exception {
        List<SyPsyhPsd> list = new ArrayList<SyPsyhPsd>();
        Map<String, Object> rsultMap = new HashMap<String, Object>();
        AutoCode auto =new AutoCode();
        Workbook workbook = null;
        String fileName = file.getOriginalFilename();
        if(fileName.endsWith("xls")) {
        //2003
        try {
        workbook = new HSSFWorkbook(file.getInputStream());
        } catch (Exception e) {
        e.printStackTrace( );
        }
        }else if(fileName.endsWith("xlsx")) {
        try {
        //2007
        workbook = new XSSFWorkbook(file.getInputStream());
        } catch (Exception e) {
        e.printStackTrace( );
        }
        }else {
        try {
        throw new Exception("文件不是Excel文件");
        } catch (Exception e) {
        e.printStackTrace();
        }
        }
        Sheet sheet = workbook.getSheet("export");
        int rows = sheet.getLastRowNum();//指定行数。一共多少+
        if(rows==0) {
        try {
        throw new Exception("请填写行数");
        } catch (Exception e) {
        e.printStackTrace();
          }
        }
        for (int i = 2; i < rows+1; i++) {
        //读取左上端单元格
        Row row = sheet.getRow(i);
        //行不为空
        if(row != null) {
        //创建实体类
        SyPsyhPsd syPsyhPsd = new SyPsyhPsd();
        //读取第一个内容
        String rq = getCellValue(row.getCell(0));
        syPsyhPsd.setRq(rq);
        //读取第二个内容
        /*String khpk = getCellValue(row.getCell(1));
        syPsyhPsd.setKhpk(khpk);;*/
        //读取第三个内容
        String zzsj = getCellValue(row.getCell(1));
        syPsyhPsd.setZzsj(zzsj);
        //读取第四个内容
        String zwsj = getCellValue(row.getCell(2));
        syPsyhPsd.setZwsj(zwsj);
        //读取第五个内容
        String hwsx = getCellValue(row.getCell(3));
        syPsyhPsd.setHwsx(hwsx);

        //判断实体是否为空
        if (syPsyhPsd!=null) {

        //如果不为空,调用增加方法
        super.save(syPsyhPsd);
           }
           }
       }
      }

     

        

     

    /**
    *获取Cell内容

    */

      private String getCellValue(Cell cell) {
        String value = "";
        if(cell != null) {
        //以下是判断数据的类型
        switch (cell.getCellType()) {
        case HSSFCell.CELL_TYPE_NUMERIC://数字
        value = cell.getNumericCellValue() + "";
        if(HSSFDateUtil.isCellDateFormatted(cell)) {
        Date date = cell.getDateCellValue();
        if(date != null) {
        value = new SimpleDateFormat("yyyy-MM-dd").format(date);
        }else {
        value = "";
        }
        }else {
        value = new DecimalFormat("0").format(cell.getNumericCellValue());
        }
        break;
        case HSSFCell.CELL_TYPE_STRING: //字符串
        value = cell.getStringCellValue();
        break;
        case HSSFCell.CELL_TYPE_BOOLEAN: //boolean
        value = cell.getBooleanCellValue() + "";
        break;
        case HSSFCell.CELL_TYPE_FORMULA: //公式
        value = cell.getCellFormula() + "";
        break;
        case HSSFCell.CELL_TYPE_BLANK: //空值
        value = "";
        break;
        case HSSFCell.CELL_TYPE_ERROR: //故障
        value = "非法字符";
        break;
        default:
        value = "未知类型";
        break;
          }
      }
        return value.trim();
      }

     

    
    
  • 相关阅读:
    sublime-生成html1.0
    sublime代码片段
    单色半透明-兼容IE7
    IE
    身心被掏空
    屏幕适配的方法
    宫格布局实例(注意jquery的版本号要统一)
    宫格布局实例(注意jquery的版本号要统一)2
    有 n个整数,使其前面各数顺序向后移 m 个位置,最后m个数变成最前面的 m 个数。
    给出两个&#160;非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照&#160;逆序&#160;的方式存储的,并且它们的每个节点只能存储&#160;一位&#160;数字。 如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。
  • 原文地址:https://www.cnblogs.com/liuhaotian548/p/12911525.html
Copyright © 2020-2023  润新知