@PostMapping("/uploadLatinExcel")
@ResponseBody
public void uploadLatinExcel(MultipartFile file, HttpServletResponse response) {
try {
List<LatinName> exportList = new ArrayList<>();//返回数据列表
// 没有使用实体类注解的形式,这里用的Map
List<LatinName> list = ExcelImportUtil.importExcel(
MultipartFileToFile.MultipartFileToFile(file),//把MultipartFile 转File
LatinName.class,//映射的实体类
new ImportParams()
);
// 数据打印,对应的业务操作
for (LatinName l : list) {
l.setShortLatinName(LatinNameUtils.getLatinShort(l.getLatinName()));
exportList.add(l);
}
//返回处理后的excel
response.setContentType("application/octet-stream");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode("result", "utf-8") + ".xls");
response.setCharacterEncoding("utf-8");
//ExcelExportUtil.exportExcel()方法的第二个参数为对应实体class对象,第三个参数为对应实体的list集合
Workbook workbook = ExcelExportUtil.exportExcel(new ExportParams(), LatinName.class, exportList);
workbook.write(response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}
MultipartFileToFile
import org.springframework.web.multipart.MultipartFile;
import java.io.*;
public class MultipartFileToFile {
/**
* MultipartFile 转 File
*
* @param multipartFile
* @throws Exception
*/
public static File MultipartFileToFile(MultipartFile multipartFile) {
File file = null;
//判断是否为null
if (multipartFile.equals("") || multipartFile.getSize() <= 0) {
return file;
}
//MultipartFile转换为File
InputStream ins = null;
OutputStream os = null;
try {
ins = multipartFile.getInputStream();
file = new File(multipartFile.getOriginalFilename());
os = new FileOutputStream(file);
int bytesRead = 0;
byte[] buffer = new byte[8192];
while ((bytesRead = ins.read(buffer, 0, 8192)) != -1) {
os.write(buffer, 0, bytesRead);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (os != null) {
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (ins != null) {
try {
ins.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return file;
}
}