正如标题所示,我需要将从数据库中获取的一些数据放入Excel表格中,然后将其发送到客户端,以便用户可以保存、打开或取消操作。
我看过一些相关文章,最接近的是:如何让用户下载我的文件?(Java,MVC,Excel,POI)。参考Stevens提供的链接,我尝试了以下代码:
首先,
我还发现这个链接:http://www.roseindia.net/answers/viewqa/Java-Beginners/14930-How-to-export-data-from-database-to-excel-sheet-by-using-java--in-standalone-project.html。但是在这里,Excel文件保存在服务器上。我希望文件不要保存在服务器端,而是直接传输到客户端。
(如果有帮助)我正在使用:struts 2框架、hibernate。
我可以使用其他东西,如POI API、jQuery或任何其他好东西。
由于某些原因,我不能使用
JavaScript将是我的最后一选择(尽管我已经实现了它),因为它需要更改浏览器的某些默认安全设置(如果可以避免,我也可以使用JavaScript)。
请建议我现在该怎么做。
谢谢!
我看过一些相关文章,最接近的是:如何让用户下载我的文件?(Java,MVC,Excel,POI)。参考Stevens提供的链接,我尝试了以下代码:
public String execute(){
setContentDisposition("attachment; filename=\"" + ename + "\"");
try{
ServletContext servletContext = ServletActionContext.getServletContext();
String filePath = servletContext.getRealPath("/WEB-INF/template/excel/mytemplate.xls");
File file = new File(filePath);
Workbook wb = WorkbookFactory.create(new FileInputStream(file));
Sheet sheet = wb.getSheetAt(0);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
wb.write(baos);
InputStream excelStream;
excelStream = new ByteArrayInputStream(baos.toByteArray());
}catch(Exception e){
System.out.println(e.getMessage());
}
return SUCCESS;
}
首先,
WorkbookFactory
未定义。其次,我无法正确理解代码的工作原理。我还发现这个链接:http://www.roseindia.net/answers/viewqa/Java-Beginners/14930-How-to-export-data-from-database-to-excel-sheet-by-using-java--in-standalone-project.html。但是在这里,Excel文件保存在服务器上。我希望文件不要保存在服务器端,而是直接传输到客户端。
(如果有帮助)我正在使用:struts 2框架、hibernate。
我可以使用其他东西,如POI API、jQuery或任何其他好东西。
由于某些原因,我不能使用
displayTag
。JavaScript将是我的最后一选择(尽管我已经实现了它),因为它需要更改浏览器的某些默认安全设置(如果可以避免,我也可以使用JavaScript)。
请建议我现在该怎么做。
谢谢!
<result-types>
<result-type name="jsp" class="org.apache.struts2.views.jsp"/>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"/>
<result-type name="stream" class="org.apache.struts2.dispatcher.StreamResult"/>
</result-types>
<action name="myActionName" class="package.myActionClass">
<result type="stream">
<param name="contentType">"application/vnd.ms-excel"</param>
<param name="inputName">excelStream</param>
<param name="contentDisposition">contentDisposition</param>
<param name="bufferSize">1024</param>
</result>
</action>
执行操作时出错:
java.lang.reflect.InvocationTargetException
java.lang.IncompatibleClassChangeError: Class org.apache.poi.hssf.usermodel.HSSFWorkbook does not implement the requested interface org.apache.poi.ss.usermodel.Workbook
WorkbookFactory
是POI API的一部分,它是Apache项目。 - Umesh AwasthiWorkbookFactory
错误的原因。其次,现在我已经添加了所需的jar文件,但当我运行项目时出现错误。错误是--> FAIL - 部署应用程序到上下文路径 /,但上下文启动失败....\nbproject\build-impl.xml:770: 该模块尚未部署。构建失败(总时间:5秒)。请参见struts-config .xml文件代码的编辑。 - kanishk