0 0

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个答案 按时间排序 按投票排序

0 0

采纳的答案

晕,程序写错了,大错特错。
错误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
0 0

另外注意jsp会把本身代码中换行符号等输出到 输出流中,这个对于文件下载类程序来说会导致数据不正确,把所有<%%>和<%%>中间的换行符号去掉吧

2008年6月17日 18:10

相关推荐

    SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip

    在本项目中,"SpringBootMybatis+poi+Thymeleaf实现excel文件数据导入到数据库以及从数据库将数据导出成excel.zip",我们主要关注的是如何利用Java技术栈来处理Excel文件,并与数据库进行交互。以下是相关知识点的...

    java+poi+excel读取写入等操作所有jar(最新支持excel2013)Java实用源码整理learns

    4. 保存到文件:完成数据写入后,使用`Workbook`的`write(OutputStream)`方法将内容写入到OutputStream,最后关闭流以保存文件。 三、高级功能 1. 表格样式:你可以定义表格样式,包括边框、填充色、字体等,然后...

    springboot+mybatis+poi 实现excel导入导出

    - 导出:同样,先从数据库查询数据,转换为Excel所需的格式,再使用POI创建新的工作簿和工作表,填充数据,最后写入到OutputStream或者保存为文件。 ```java List&lt;Student&gt; students = studentMapper.selectAll()...

    利用poi+itextpdf进行word转pdf.rar

    在这个场景中,我们看到一个关于如何使用Java编程语言实现此功能的资源包:“利用poi+itextpdf进行word转pdf.rar”。这个压缩包包含源码、依赖库以及转换效果的示例,表明它提供了一种无需额外插件的解决方案。下面...

    使用poi+itext将excel转为pdf

    看到现在网上excel转pdf的代码很少,在csdn上找到一个还不能用,只能做简单的转换,只好自己写了一个,代码是一个maven工程,用eclipse创建,支持单元格合并等复杂的excel,同时能同步单元格样式到pdf中。...

    利用poi+itextpdf进行word转pdf.zip

    将word转换成pdf确实有很多种方案!最近正好需要做一个这样的功能,需求是将word模板进行签名后转换为pdf。...这里记录一下最终的方案:利用poi+itextpdf进行word转pdf。此资源按包含源码和maven依赖。

    SpringBoot+POI+反射机制实现复杂Excel文件解析

    POI库提供了对Excel文件的低级别和高级API,使得我们能够轻松地读取和写入数据。 ```xml &lt;groupId&gt;org.apache.poi &lt;artifactId&gt;poi-ooxml &lt;version&gt;4.1.2 ``` 接着,创建一个服务类,该类将处理Excel文件的...

    POI + Struts2 实现Excel导出工具包

    6. **返回文件流**:最后,通过ServletOutputStream将生成的Excel文件写入到响应流中,完成导出。 在提供的文件名“XLSPOI2.5.1”中,可能包含了一个示例项目或库,你可以参考其代码来理解以上步骤的实际应用。通过...

    SpringMVC+jdbc+poi+download

    实现文件下载,开发者通常需要设置响应头的Content-Type、Content-Disposition属性,指定文件名和类型,并将文件内容流式传输到客户端。在SpringMVC中,可以使用Controller方法返回HttpEntity对象,或者使用Response...

    poi +jsp 实现excel的上传下载的小例子

    标题中的“poi+jsp 实现excel的上传下载的小例子”是指使用Apache POI库与Java Server Pages(JSP)技术来处理Excel文件的上传和下载功能。Apache POI是一个流行的开源项目,它允许开发者在Java应用程序中创建、修改...

    \"java+poi+Excel模板\"制作简单的报表

    标题中的“`java+poi+Excel模板`”指的是使用Java编程语言,结合Apache POI库来处理Microsoft Excel模板,以生成或编辑Excel报表的过程。Apache POI是一个流行的开源项目,它允许开发者使用Java读写Microsoft Office...

    ssm+poi+shiro+echarts.zip

    结合描述 "ssm+poi+shiro+echarts" 和标签 "ssm+poi+shiro+ec" 可知,这个项目旨在创建一个具备数据导入导出、用户权限管理及可视化功能的Web应用。文件名 "springmvc" 指示了项目的核心部分可能涉及到SpringMVC的...

    Poi+java实现表格导入导出

    在Java编程环境中,Apache POI库是一个非常实用的工具,它允许我们操作Microsoft Office格式的文件,特别是Excel工作簿。本篇文章将详细讲解如何利用Apache POI和Java来实现表格的导入与导出功能。 首先,我们需要...

    struts2+poi实现excel文件的导出

    Struts2 和 Apache POI 的整合允许开发者轻松地实现在 Web 应用程序中导出 Excel 文件的功能。Apache POI 是一个 Java 库,它提供了处理 Microsoft Office 格式(如 .xls 和 .xlsx)的能力,包括创建、读取和修改 ...

    ssm +poi + json 整合jar包

    SSM(Spring、SpringMVC、MyBatis)是一个广泛使用的Java Web开发框架组合,而Apache POI是一个用于处理Microsoft Office格式文件的库,如Excel。阿里巴巴的JSON库(fastjson或alibaba json-lib)则提供了高效、易用...

    java+poi+excel读取写入等操作所有jar(最新支持excel2013)+poi-bin-3.10-beta2-20130904源代码学习

    6. **保存和关闭文件**:完成操作后,使用Workbook对象的write()方法将内容写入到OutputStream,最后要记得关闭Workbook和FileOutputStream以释放资源。 源代码学习方面,你可以通过阅读POI的源码了解其内部实现,...

    POI+struts2导出Excel

    标题中的“POI+struts2导出Excel”是指使用Apache POI库与Struts2框架结合,实现在Web应用程序中导出数据到Excel的功能。Apache POI是Java平台上的一个开源项目,它允许开发者创建、修改和显示Microsoft Office格式...

    java+poi+excel读取写入等操作所有jar(最新支持excel2013javalearnsa资料分享

    标题和描述提到的"java+poi+excel读取写入等操作所有jar(最新支持excel2013)"指的是使用Java POI库进行Excel文件的各种操作,并且这些操作适用于Excel 2013版本,这表明提供的jar文件应该包含了支持较新Excel格式...

    struts2+poi实现导出Excel文件

    Struts2 和 Apache POI 的结合使用主要集中在创建 Web 应用程序中导出 Excel 文件的功能上。Apache POI 是一个 Java 库,允许开发者创建、修改和显示 Microsoft Office 格式的文件,其中包括 Excel。而 Struts2 是一...

    Springboot+Poi实现Excel的导入导出

    最后,将Workbook写入到本地文件。 2. **导入Excel**:读取本地Excel文件,解析Workbook,获取每个Sheet,再遍历Sheet中的Row和Cell。将读取到的数据转换为适合插入数据库的格式,通过MyBatis的SqlSession执行相应...

Global site tag (gtag.js) - Google Analytics