gpt4 book ai didi

java - Jersey @Produces Apache XSSFWorkbook

转载 作者:行者123 更新时间:2023-11-30 07:24:21 25 4
gpt4 key购买 nike

我正在尝试使用 Jersey 生成 XSSFWorkbook。

我已经尝试了以下 header ,但似乎没有任何效果:

@Produces("应用程序/xml")

@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")

@Produces("application/vnd.openxml"

全部返回如下错误:

Caused by: com.sun.jersey.api.MessageException: A message body writer for Java class org.apache.poi.xssf.usermodel.XSSFWorkbook, and Java type class org.apache.poi.xssf.usermodel.XSSFWorkbook, and MIME media type application/xml was not found ... 37 more

本质上,我有一个创建 XSSFWorkbook 的函数,我想将它写出来供用户下载。我能够做到这一点:

 /*
HttpServletResponse response;
XssfWorkbook excel.write(response.getOutputStream());
*/
@GET
@Path("/excel/")
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
public XSSFWorkbook exportReadingsAsExcel(@Context HttpServletResponse webResponse)
{
XSSFWorkbook excel = createExcel();
setHeader(webResponse, "export.xlsx");
try {
excel.write(webResponse.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
return excel; //ERROR IS HERE
}

但由于其他原因,我还需要返回 XSSFWorkbook 的函数。我希望我可以让 Jersey 将其写出来,而不是使用网络响应。

感谢您的帮助。

(我对 Jersey 和 XSSF 有点陌生,所以如果我对术语或理解有误,请多多包涵)

最佳答案

您需要为 XSSFWorkbook 编写自定义编写器(或找到一个)并将其插入 Jersey,如:

@Provider
@Produces("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
public class CustomXSSFWorkbookWriter implements MessageBodyWriter {
//This methode is the most important for you
@Override
public void writeTo(Object target, Class type, Type genericType,
Annotation[] annotations, MediaType mediaType,
MultivaluedMap httpHeaders, OutputStream outputStream)
throws IOException {

然后你必须像这样将这个类的包添加到你的 web.xml 中:

<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>com.packages.to.your.views;com.packages.to.your.providers</param-value>
</init-param>

Jersey 将由您自己的作家来制作这种特定格式。抱歉,我对 XSSFWorkbook 一无所知。

希望能解决您的问题。

关于java - Jersey @Produces Apache XSSFWorkbook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11525510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com