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

  

 

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