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