-
poi+webflow 如何实现文件流直接写入到客户端10
最近项目要用poi+webflow实现到处excel的功能,直接导出到服务器端以实现,先不想在服务器端保存临时文件,就是当用户点击导出按钮时弹出一个弹出保存框,类似于”目标另存为“
export_flow.xml文件如下
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE flow PUBLIC "-//SPRING//DTD WEBFLOW 1.0//EN"
"http://www.springframework.org/dtd/spring-webflow-1.0.dtd">
<flow start-state="showVehicleLaunchOptions">
<view-state id="showVehicleLaunchOptions" view="admin/vehicle-launch/showVehicleLaunchOptions">
<entry-actions>
<action bean="archiveUploadFormAction" method="setupForm"/>
<action bean="importFormAction" method="setupForm"/>
</entry-actions>
</transition>
<transition on="exportArchive" to="FindModelInfobyId">
</transition>
</view-state>
<action-state id="FindModelInfobyId">
<action bean="ModelInfoDAO" method="findByid(${requestParameters.select})" result-name="modelInfo" result-scope="flow"/>
<transition to="exportExcelModel"/>
<transition on-exception="java.lang.Exception" to="error"/>
</action-state>
<view-state id="exportExcelModel" view="admin/vehicle-launch/exportexcel">
<entry-actions>
<action bean="MYCOBean" method="ExportModel(${flowScope.modelInfo})" result-name="fileOut" result-scope="request"/>
</entry-actions>
<transition to="finish"/>
<transition on-exception="java.lang.Exception" to="error"/>
</view-state>
<end-state id="incorrectType" view="admin/export/invalidFile"/>
<end-state id="finish" view="admin/export/success"/>
<end-state id="error" view="admin/export/error"/>
</flow>
public class ExportModelExcel {
HSSFWorkbook wb = new HSSFWorkbook();
public FileOutputStream ExportModel(ModelInfo modelInfo) throws Exception {
System.out.println
int sheetNumber = 0;
HSSFSheet sheet;
while (sheetNumber < SHEET_HANDLERS.length && modelInfo != null) {
ISheetHandler sheetHandler = SHEET_HANDLERS[sheetNumber];
try {
sheet = wb.createSheet(SHEETS[sheetNumber]);
sheetHandler.process(sheet, modelInfo, this.getCellHeadStyle(),
this.getCellDataStyle());
} catch (SheetHandlerException e) {
throw new ModellerException( ModellerExceptionEnums.EXCEL_MODELLER_EXCEPTION, e);
}
sheetNumber++;
}
FileOutputStream fileOut = new FileOutputStream("test.xls");
wb.write(fileOut);
fileOut.close();
return fileOut;
}
}
exportexcel.jsp:
<%@ page contentType="application/vnd.ms-excel" %>
<%response.addHeader("Content-Disposition", "attachment;filename=test.xls");%>
${requestScope.fileOut};
现在导出的excel文件打开报excel的格式与文件扩展名指定的格式不一致,打开前请验证文件,点是后,excel中显示 java.io.FileOutputStream@1c0c8b3
用过的兄弟多多指点,先谢了!
2008年6月17日 16:31
2个答案 按时间排序 按投票排序
-
采纳的答案
晕,程序写错了,大错特错。
错误1:
${requestScope.fileOut};
这样写最多把这个对象的toString()输出到浏览器。
错误2:
ExportModel()这个方法错了
这里你的实现只是把内容写入了test.xls中,而这个文件是本地的文件。而返回的fileoutputstream已经被使用过了,对后面毫无用处。
正确的方法应该把excel内容写入浏览器应答对象的输出流中(response.getOutputStream()):
1,获取HSSFWorkbook 对象wb(已经实例化数据)
2,jsp中调用wb.write(request.getOutputStream())<%@ page contentType="application/vnd.ms-excel" %> <%response.addHeader("Content-Disposition", "attachment;filename=test.xls");%> ${wb.write(response.getOutputStream())};
大致思路就是这样2008年6月17日 18:08
-
另外注意jsp会把本身代码中换行符号等输出到 输出流中,这个对于文件下载类程序来说会导致数据不正确,把所有<%%>和<%%>中间的换行符号去掉吧
2008年6月17日 18:10
相关推荐
在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...
4. 保存到文件:完成数据写入后,使用`Workbook`的`write(OutputStream)`方法将内容写入到OutputStream,最后关闭流以保存文件。 三、高级功能 1. 表格样式:你可以定义表格样式,包括边框、填充色、字体等,然后...
- 导出:同样,先从数据库查询数据,转换为Excel所需的格式,再使用POI创建新的工作簿和工作表,填充数据,最后写入到OutputStream或者保存为文件。 ```java List<Student> students = studentMapper.selectAll()...
在这个场景中,我们看到一个关于如何使用Java编程语言实现此功能的资源包:“利用poi+itextpdf进行word转pdf.rar”。这个压缩包包含源码、依赖库以及转换效果的示例,表明它提供了一种无需额外插件的解决方案。下面...
看到现在网上excel转pdf的代码很少,在csdn上找到一个还不能用,只能做简单的转换,只好自己写了一个,代码是一个maven工程,用eclipse创建,支持单元格合并等复杂的excel,同时能同步单元格样式到pdf中。...
将word转换成pdf确实有很多种方案!最近正好需要做一个这样的功能,需求是将word模板进行签名后转换为pdf。...这里记录一下最终的方案:利用poi+itextpdf进行word转pdf。此资源按包含源码和maven依赖。
POI库提供了对Excel文件的低级别和高级API,使得我们能够轻松地读取和写入数据。 ```xml <groupId>org.apache.poi <artifactId>poi-ooxml <version>4.1.2 ``` 接着,创建一个服务类,该类将处理Excel文件的...
6. **返回文件流**:最后,通过ServletOutputStream将生成的Excel文件写入到响应流中,完成导出。 在提供的文件名“XLSPOI2.5.1”中,可能包含了一个示例项目或库,你可以参考其代码来理解以上步骤的实际应用。通过...
实现文件下载,开发者通常需要设置响应头的Content-Type、Content-Disposition属性,指定文件名和类型,并将文件内容流式传输到客户端。在SpringMVC中,可以使用Controller方法返回HttpEntity对象,或者使用Response...
标题中的“poi+jsp 实现excel的上传下载的小例子”是指使用Apache POI库与Java Server Pages(JSP)技术来处理Excel文件的上传和下载功能。Apache POI是一个流行的开源项目,它允许开发者在Java应用程序中创建、修改...
标题中的“`java+poi+Excel模板`”指的是使用Java编程语言,结合Apache POI库来处理Microsoft Excel模板,以生成或编辑Excel报表的过程。Apache POI是一个流行的开源项目,它允许开发者使用Java读写Microsoft Office...
结合描述 "ssm+poi+shiro+echarts" 和标签 "ssm+poi+shiro+ec" 可知,这个项目旨在创建一个具备数据导入导出、用户权限管理及可视化功能的Web应用。文件名 "springmvc" 指示了项目的核心部分可能涉及到SpringMVC的...
在Java编程环境中,Apache POI库是一个非常实用的工具,它允许我们操作Microsoft Office格式的文件,特别是Excel工作簿。本篇文章将详细讲解如何利用Apache POI和Java来实现表格的导入与导出功能。 首先,我们需要...
Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...
SSM(Spring、SpringMVC、MyBatis)是一个广泛使用的Java Web开发框架组合,而Apache POI是一个用于处理Microsoft Office格式文件的库,如Excel。阿里巴巴的JSON库(fastjson或alibaba json-lib)则提供了高效、易用...
6. **保存和关闭文件**:完成操作后,使用Workbook对象的write()方法将内容写入到OutputStream,最后要记得关闭Workbook和FileOutputStream以释放资源。 源代码学习方面,你可以通过阅读POI的源码了解其内部实现,...
标题中的“POI+struts2导出Excel”是指使用Apache POI库与Struts2框架结合,实现在Web应用程序中导出数据到Excel的功能。Apache POI是Java平台上的一个开源项目,它允许开发者创建、修改和显示Microsoft Office格式...
标题和描述提到的"java+poi+excel读取写入等操作所有jar(最新支持excel2013)"指的是使用Java POI库进行Excel文件的各种操作,并且这些操作适用于Excel 2013版本,这表明提供的jar文件应该包含了支持较新Excel格式...
Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...
最后,将Workbook写入到本地文件。 2. **导入Excel**:读取本地Excel文件,解析Workbook,获取每个Sheet,再遍历Sheet中的Row和Cell。将读取到的数据转换为适合插入数据库的格式,通过MyBatis的SqlSession执行相应...