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/
浙公网安备 33010602011771号