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/