• Java操作.csv格式文件导入


    .csv格式文件上传

    目前EsayExcel框架仅支持.xls.xlsx格式的表格上传,针对于.csv格式的文件上传,需要单独书写工具类,步骤如下:

    1. 导入对于的maven架包

    <dependency>
        <groupId>net.sourceforge.javacsv</groupId>
        <artifactId>javacsv</artifactId>
        <version>2.0</version>
    </dependency>

      2. 增加配置

    spring:
       multipart:
        #设置文件上传大小
         max-file-size: 100MB
         max-request-size: 100MB
    

      3. 后台代码

    @RequestMapping("/importExcel")
    public String importExcelPCT(MultipartFile file) throws IOException, ParseException {
        String filename = file.getOriginalFilename();
        if (StringUtils.isEmpty(filename)) {
            return "未找到上传文件";
        }
            CsvReader csvReader = new CsvReader(new BufferedInputStream(file.getInputStream()), Charset.forName("GBK"));
            boolean flag = false;
            String returnMsg = "";
            //t1代表表格的列数
            int tl = 0;
            while (csvReader.readRecord()) {
                long rowIndex = csvReader.getCurrentRecord();
                String obj = csvReader.getRawRecord();
                if (StringUtils.isEmpty(obj)) {
                    flag = true;
                    returnMsg = "数据为空";
                    break;
                } else {
                    //因csv上传数据是以逗号分割的文本数据,要进行切割
                    List<String> list = new ArrayList<>(Arrays.asList(obj.split(",")));
                    if (list.isEmpty()) {
                        break;
                    }
                    if (rowIndex == 1) {
                        tl = list.size();
                    }
                    if (rowIndex >= 1) {
                        // 避免最后单元格为空时,将集合保持相同长度,当表格中后部分存在为空的情况,不会读取后面为空的列
                        int k = list.size();
                        if (k < tl) {
                            int w = tl - k;
                            for (int i = 0; i < w; i++) {
                                list.add("");
                            }
                        }
                        //todo 此次开始处理获取到的数据,可以向数据库中进行插入
                    }
                }
        }
        return null;
    }
    

      以上功能亲测有效,如果对以上内容有所疑问的,欢迎留言交流。

    转载请说明出处,本人博客地址为:https://www.cnblogs.com/chenyuanbo/

      

  • 相关阅读:
    35.使用拦截器实现权限验证
    34.TokenInterceptor防止表单重复提交
    33.使用默认的execAndWait拦截器
    32.使用来MethodFilterInterceptor灵活拦截
    31.自定义拦截器
    sql 学习笔记 档
    AVR文章7课时:动态数字化控制
    MapReduce 规划 系列的12 使用Hadoop Streaming技术集成newLISP文字
    左右TS分析流
    Java达到MySQL数据库备份(两)
  • 原文地址:https://www.cnblogs.com/chenyuanbo/p/13711155.html
Copyright © 2020-2023  润新知