1 Maven依赖
<!-- EasyPoi文档处理工具 -->
<dependency>
<groupId>cn.afterturn</groupId>
<artifactId>easypoi-base</artifactId>
<version>4.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.6.RELEASE</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
2 XWPFDocument转MultipartFile
2.1 CommonsMultipartFile
/**
* XWPFDocument 转 MultipartFile(CommonsMultipartFile)
*
* @param document 文档对象
* @param fileName 文件名
* @return
*/
public static MultipartFile xwpfDocumentToCommonsMultipartFile(XWPFDocument document, String fileName) {
//XWPFDocument转FileItem
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem fileItem = factory.createItem("textField", "text/plain", true, fileName);
try {
OutputStream os = fileItem.getOutputStream();
document.write(os);
os.close();
//FileItem转MultipartFile
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
return multipartFile;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
2.2 MockMultipartFile
/**
* XWPFDocument 转 MultipartFile(MockMultipartFile)
*
* @param document 文档对象
* @param fileName 文件名
* @return
*/
public static MultipartFile xwpfDocumentToMockMultipartFile(XWPFDocument document, String fileName) {
try {
String contentType = "text/plain";
ByteArrayOutputStream bos = new ByteArrayOutputStream();
document.write(bos);
//XWPFDocument 转 byte[]
byte[] barray = bos.toByteArray();
//byte[] 转 InputStream
InputStream is = new ByteArrayInputStream(barray);
//InputStream 转 MultipartFile
MultipartFile multipartFile = new MockMultipartFile(fileName, fileName, contentType, is);
return multipartFile;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
3 Workbook转MultipartFile
3.1 CommonsMultipartFile
/**
* Workbook 转 MultipartFile(CommonsMultipartFile)
*
* @param workbook excel文档
* @param fileName 文件名
* @return
*/
public static MultipartFile workbookToCommonsMultipartFile(Workbook workbook, String fileName) {
//Workbook转FileItem
FileItemFactory factory = new DiskFileItemFactory(16, null);
FileItem fileItem = factory.createItem("textField", "text/plain", true, fileName);
try {
OutputStream os = fileItem.getOutputStream();
workbook.write(os);
os.close();
//FileItem转MultipartFile
MultipartFile multipartFile = new CommonsMultipartFile(fileItem);
return multipartFile;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
3.2 MockMultipartFile
/**
* Workbook 转 MultipartFile(MockMultipartFile)
*
* @param workbook excel文档
* @param fileName 文件名
* @return
*/
public static MultipartFile workbookToMockMultipartFile(Workbook workbook, String fileName) {
try {
String contentType = "text/plain";
ByteArrayOutputStream bos = new ByteArrayOutputStream();
workbook.write(bos);
//Workbook 转 byte[]
byte[] barray = bos.toByteArray();
//byte[] 转 InputStream
InputStream is = new ByteArrayInputStream(barray);
//InputStream 转 MultipartFile
MultipartFile multipartFile = new MockMultipartFile(fileName, fileName, contentType, is);
return multipartFile;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
注:
(1)CommonsMultipartFile类需要引入commons-fileupload依赖。
(2)MockMultipartFile需要引入spring-test依赖。