excel Java POI将工作簿转换为文件
我需要返回一个工作簿,但已转换为Java File
对象。
目前我只知道如何用workbook.write(outputStream)
将工作簿写入磁盘。但是,我想返回File
对象,以便直接使用它进行进一步处理(上传到Amazon)
我的代码:
public File addErrorColumnToExcel(MultipartFile file, HashMap<Integer, String> errors, int newColumnIndex) throws IOException {
Workbook workbook = null;
Sheet sheet = null;
Row row;
Cell newErrorCell;
String errorText;
try {
workbook = new XSSFWorkbook(new BufferedInputStream(file.getInputStream()));
sheet = workbook.getSheetAt(FIRST_SHEET_INDEX);
} catch (IOException e) {
logger.error("cannot get the file: " + file.getOriginalFilename() + e);
}
//do some logic
return workbook; //but I need to convert this to a java File
}
# 1 楼答案
您可以创建一个临时文件,并在返回之前将数据写入该文件。处理后不要忘记删除文件。下面是一个简化的片段:
注意,我对
XSSFWorkbook
和FileOutputStream
使用了try with资源另一个想法是返回字节数组
byte[]
,而不是File
。这是一个更干净的解决方案,不会将文件写入磁盘