1 Excel上传
针对Excel的上传,采用的是比较常规的方法,其实和文件上传是相同的。具体源码如下:
@PostMapping(value = "", consumes = "multipart/*", headers = "content-type=multipart/form-data")
public Map addBlacklist(
@RequestParam("file") MultipartFile multipartFile, HttpServletRequest request
) {
//判断上传内容是否符合要求
String fileName = multipartFile.getOriginalFilename();
if (!fileName.matches("^.+\\.(?i)(xls)$") && !fileName.matches("^.+\\.(?i)(xlsx)$")) {
return returnError(0,"上传的文件格式不正确");
}
String file = saveFile(multipartFile, request);
int result = 0;
try {
result = blacklistServcice.addBlackLists(file);
} catch (Exception e) {
e.printStackTrace();
}
return returnData(result);
}
private String saveFile(MultipartFile multipartFile, HttpServletRequest request) {
String path;
String fileName = multipartFile.getOriginalFilename();
// 判断文件类型
String realPath = request.getSession().getServletContext().getRealPath("/");
String trueFileName = fileName;
// 设置存放Excel文件的路径
path = realPath + trueFileName;
File file = new File(path);
if (file.exists() && file.isFile()) {
file.delete();
}
try {
multipartFile.transferTo(new File(path));
} catch (IOException e) {
e.printStackTrace();
}
return path;
}
上面的源码我们可以看见有一个saveFile方法,这个方法是将文件存在服务器本地,这样方便后续文件内容的读取,用不着一次读取所有的内容从而导致消耗大量的内存。当然这里大家如果有更好的方法希望能留言告知哈。
2 Excel处理工具源码
import org.apache.poi.openxml4j.opc.OPCPackage;
import org.apache.poi.xssf.eventusermodel.XSSFReader;
import