- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有下面的类,它尝试以 Excel 电子表格的形式返回一些数据。我收到错误
MessageBodyWriter not found for media type=application/octet-stream, type=class org.apache.poi.xssf.usermodel.XSSFWorkbook
我也尝试过@Produces("application/vnd.ms-excel")
,但也遇到了类似的错误。有人建议我如何让它返回电子表格吗?上次我收到与此类似的错误消息(提示找不到 arraylist 的消息正文编写器)时,我只是将其包装在通用实体中。这次这个伎俩没有奏效。
@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();
}
}
最佳答案
您不能仅使用数据类型为application/octet-stream
的任意对象。您首先需要了解的是对象是如何序列化的。这是通过使用 MessageBodyWriter
来完成的。您可以在 JAX-RS Entity Providers 中了解更多有关它们的信息。 .
编写器的工作原理是传递实体和响应流。作者应该获取实体并将实体的内容写入响应流。通过我们返回的实体类型和预期的媒体类型来查找编写器,在您的情况下,您希望它是 application/octet-stream
。
错误的意思是没有编写器来处理您的 XSSFWorkbook
的转换。当您谈论application/octet-stream
时,您主要是在处理二进制文件。 XSSFWorkbook
不是二进制文件。使用 application/octet-stream
时,您主要会使用 byte[]
、File
、InputStream
> 和 StreamingOutput 实体类型。因此,如果您想使用application/octet-stream
,那么您需要将实体更改为这些类型之一。
我从未使用过 Apache POI,但只是浏览了一个快速教程,看起来您可能想要在这种情况下使用的是 StreamingOutput
,您可以只使用 XSSFWorkbook#write(OutputStream)
方法将工作簿写入 StreamingOutput
public Response getExcelFile() {
XSSFWorkbook workbook = new XSSFWorkbook();
...
StreamingOutput output = new StreamingOutput() {
@Override
public void write(OutputStream out)
throws IOException, WebApplicationException {
workbook.write(out);
out.flush();
}
};
return Response.ok(output)
.header(HttpHeaders.CONTENT_DISPOSITION,
"attachment; filename=jobs.xls")
.build();
}
关于jersey - 未找到 Media type=application/octet-stream、type=class org.apache.poi.xssf.usermodel.XSSFWorkbook 的 MessageBodyWriter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50400719/
private void cleaner(Integer columnsCount, Integer rowsCount, Object object){ int firstColumn=0;
我收到以下代码的NullPointerException。有人可以帮忙解决这个问题吗?我正在尝试将数据库值获取到现有的 Excel 工作表。 Statement statement = connect
我正在尝试编写一个函数,该函数读取 Excel 模板并开始在某个行索引处写入。但是,我发现编号会跳过模板中的空白行。有没有办法在迭代期间计算空白行? 我试图找到相当于 missing cell pol
我尝试使用 apache poi xssf 将 excel 文件解析为 XML。现在有了一个单元格,但不知道里面有什么,我只想从中获取一个字符串。但是当我使用 cell.getStringCellVa
我正在尝试读取由网络应用程序生成的 Excel 文件。但我无法访问任何列或行,因为 XSSF 工具一直告诉我没有工作表。单个工作表称为“MySheet”,但当我按名称搜索它时,得到 -1。当我搜索工作
这是我到目前为止的代码,它从查询中获取数据,然后将其导出到 Excel 文档中: oArray = CreateObject("java", "java.util.Arrays"); wor
我现在已经尝试从 XSSFSheet 中删除图像太久了。我找不到关于此的任何信息,但我认为这是可能的.. 有什么方法可以从我的 XSSFSheet 中删除图像吗?甚至官方(?)apache poi 网
我在保存新的 Excel 文件时遇到问题。我希望它在保存时公式会自行计算,但目前它只是在 excel 文件中返回一个字符串。公式是正确的。我不知道如何让 FormulaEvaluator 工作。 这里
我有一个 HSSF 工作簿,其中包含我的自定义颜色,但现在我需要使用 XSSF 来创建 xslx 文件。 我已经相应地改变了一切,但唯一让我难过的是如何在这样的事情中使用定制的 XSSFColor :
我想为使用 poi 3.14 创建的 xlsx 文件添加密码保护。文档声称,这是可能的: http://poi.apache.org/encryption.html 使用我这样尝试的示例: p
我正在使用 Apache POI 3.12: org.apache.poi poi 3.12 org.apache.poi poi-ooxml 3
我目前正在使用 Apache POI 库在 Java 中生成 excel 文件。 这就是我想知道的:在 Excel 中,可以创建新的单元格样式并将其添加到工作簿中。这些样式是可重复使用的,并且可以从样
几年前,我遇到了使用 jXLS 和 POI XSSF 创建大型 excel 文件的问题。如果我没记错的话,我认为 XSSF 会在磁盘上创建类似 1GB+ 的临时文件来创建 10mb 的 excel 文
有没有办法确定单元格是否为日期?我知道 style.get DataFormatString() 但这对我没有帮助,因为我无法确定格式是否适用于日期。 最佳答案 如果您使用的是 XSSF 用户模型,那
我使用下面的代码在 XSSF 工作表中设置默认列样式?但这不起作用任何人都可以建议错误修复。 format = workbook.createDataFormat(); style = workboo
如何将现有列数据和格式复制到 Apache POI 中的下一列并将下一列向右移动。 我试过了。假设我的代码是这样的...... XSSFCell oldCell = worksheet.getRow(
无法将“STYLE”从 .xlsx 文件复制到另一个文件。 这是我正在使用的代码。 public static void copyCell(XSSFCell oldCell, XSSFCell ne
单元格 A1 具有 公式“=A2”并被格式化为显示 1 个小数点 单元格 A2 具有 值 4.23 单元格 A1 显示 4.2(格式化显示值) 单元格 A2 显示 4.23(格式化显示值) 我的 XS
有没有办法不读取整个 Excel 文档行,我正在读取文档中定义的单元格,但是,它拉入了整个工作表的列??? 我正在将 Excel 文档转换为 CSV 文档。我得到了这个结果。 Aircraft ID
我已经使用 XLS,但今天我正在尝试新的 - xlsx。对于 XLS,我只需要一个库,而 XLSX(四个库)则相反。我还得到整个包错误。为什么会发生这种情况? 主要: public class
我是一名优秀的程序员,十分优秀!