zoukankan      html  css  js  c++  java
  • 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/

      

  • 相关阅读:
    jmeter-获取数据库中的数据
    jmeter常见报错汇总
    学习目录
    Spring+Spring Security+JSTL实现的表单登陆的例子
    Spring+Spring Security+Maven 实现的一个Hello World例子
    第六章:位置匹配
    第五章:重复匹配
    第四章:使用元字符
    第三章:匹配一组字符
    第二章:匹配单个字符
  • 原文地址:https://www.cnblogs.com/chenyuanbo/p/13711155.html
Copyright © 2011-2022 走看看