Java操作.csv格式文件导入
.csv格式文件上传
目前EsayExcel框架仅支持.xls和.xlsx格式的表格上传,针对于.csv格式的文件上传,需要单独书写工具类,步骤如下:
1. 导入对于的maven架包
1 2 3 4 5 | <dependency> <groupId>net.sourceforge.javacsv</groupId> <artifactId>javacsv</artifactId> <version> 2.0 </version> </dependency> |
2. 增加配置
1 2 3 4 5 | spring: multipart: #设置文件上传大小 max-file-size: 100MB max-request-size: 100MB |
3. 后台代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | @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/
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步