【发布时间】:2017-10-14 12:00:41
【问题描述】:
请忽略这个问题:愚蠢的解析错误。
我有一个 API,它允许上传文件并使用 Apache POI 读取它(如果文件类型不是 .xlsx,则抛出异常)。但是,似乎 WorkbookFactory.create(inputstream) 没有生成正确的文件。当我在代码中读取文件时,我在读取应该存在数据的单元格时得到null 值。
代码如下:
@POST
@Path("<path>")
@Consumes(MediaType.MULTIPART_FORM_DATA)
@Produces(MediaType.APPLICATION_JSON)
public Response submitFile(@FormDataParam("file") InputStream uploadedInputStream,
@FormDataParam("file") FormDataContentDisposition fileDetail verticalId) {
try {
StringBuilder fileNameBuilder = new StringBuilder();
String[] names = fileDetail.getFileName().replace(" ", "_").split("\\.");
Contents contents = fileParser.parse(uploadedInputStream);
return Response.ok().build();
}
public class XlsxParser implements FileParser {
public Content parse(File file) throws IOException InvalidFileFormatException{
Content content = new Content();
Workbook file;
try {
designFile = WorkbookFactory.create(file);
} catch (InvalidFormatException exception) {
throw new InvalidFileFormatException("Invalid file format. Expected file type is .xlsx");
}
Sheet sheet = file.getSheetAt(0);
Iterator<Row> rowIterator = sheet.rowIterator();
Row row = rowIterator.next();
int cellCount = row.getPhysicalNumberOfCells();
return content;
}
}
如果我首先从inputstream 创建一个.xlsx 文件,然后将File 对象传递给WorkbookFactory.create(),则相同的代码可以正常工作
有人遇到过同样的问题吗?感谢您的帮助。
【问题讨论】:
标签: java apache-poi dropwizard