.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/

  

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章