【发布时间】:2018-05-17 21:24:10
【问题描述】:
我有下面的类,它试图以 excel 电子表格的形式返回一些数据。我收到了错误
找不到媒体类型=application/octet-stream, type=class org.apache.poi.xssf.usermodel.XSSFWorkbook 的MessageBodyWriter
我也尝试过@Produces("application/vnd.ms-excel"),但也遇到了类似的错误。有人对我如何让这个返回电子表格有建议吗?上次我收到与此类似的错误消息(抱怨找不到数组列表的消息正文编写器)时,我只是将它包装在一个通用实体中。这一次没有奏效。
@PermitAll
@Path("uploadWorkbook")
public class ExcelUploadResource {
@Context
ResourceContext resourceContext;
@Inject
JobService jobService;
@GET
@Produces(MediaType.APPLICATION_OCTET_STREAM)
public Response list() {
XSSFWorkbook workbook = new XSSFWorkbook();
XSSFSheet sheet = workbook.createSheet("Job definitions");
int rowNum = 0;
for(Job job : jobService.list()){
Row row = sheet.createRow(rowNum++);
int cellNum = 0;
for(String field : job.toList()){
Cell cell = row.createCell(cellNum++);
cell.setCellValue(field);
}
}
GenericEntity<XSSFWorkbook> entity = new GenericEntity<XSSFWorkbook>(workbook) {};
ResponseBuilder response = Response.ok(entity);
response.header("Content-Disposition",
"attachment; filename=jobs.xls");
return response.build();
}
}
【问题讨论】:
标签: jersey apache-poi