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/

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM