FLEX怎么向客户端输出EXCEL文件?

h140465 2009-12-07 02:48:37
首先介绍下,项目架构~!
我们项目使用FLEX作为前台,后台使用ibatis,spring。
现在,我在FLEX端,从数据库查询出数据,然后以表单的形式显示! 这个问题已经搞定
我现在想实现一个功能:用户选择表单里的数据,然后点一个“导出EXCEL”按钮,就可以把用户选择的数据,以EXCEL格式,输出到用户机子上~!
选择数据,已经传给后台,由后台JAVA端生成EXCEL,都没问题!
现在问题是,怎么把后台生成的EXCEL传输到客户本地,最好不用现在服务器端生成一个EXCEL文件,然后下载到本机!
有个想法:后台直接把EXCEL文件写进IO流里,然后传给FLEX,FLEX接受后台的IO流以后,以下载的方式在客户端机子上写文件

希望高手帮忙解决,3Q~!
有点急,在线等~!
PS:最好能写出示例代码!!!
...全文
650 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wdatt 2011-01-31
  • 打赏
  • 举报
回复
楼主 ,请问一下 怎么不弹出保存对话框啊,很郁闷!!!
ThornBird313 2009-12-08
  • 打赏
  • 举报
回复
ExcelServlet.java

package test;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRichTextString;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;

public class ExcelServlet extends HttpServlet {

private static final long serialVersionUID = 1407382389107180200L;

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doMainDispatch(req, resp);
}

@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doMainDispatch(req, resp);
}

protected void doMainDispatch(HttpServletRequest req,
HttpServletResponse resp) throws ServletException,
IOException {
String filename = "excel.xls";
resp.reset();
resp.setCharacterEncoding("UTF-8");
resp.setContentType("application/vnd.ms-excel");
resp.addHeader("Content-Disposition", "attachment; filename=\""
+ filename + "\"");
HSSFWorkbook wb = generateExcel();
wb.write(resp.getOutputStream());
resp.getOutputStream().flush();
}

private HSSFWorkbook generateExcel() {
HSSFWorkbook wb = new HSSFWorkbook();
HSSFSheet sheet = wb.createSheet("Sheet1");
HSSFRow row = sheet.createRow(0);
HSSFCell cell=row.createCell((short)0);
cell.setCellValue(new HSSFRichTextString("Excel"));
return wb;
}

}



web.xml中加入:

<servlet>
<servlet-name>Excel Servlet</servlet-name>
<servlet-class>test.ExcelServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Excel Servlet</servlet-name>
<url-pattern>/DownloadExcel</url-pattern>
</servlet-mapping>



Download.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">

<mx:Script>
<![CDATA[
import flash.net.FileReference;
import flash.net.URLRequest;

private var fileReference:FileReference = null;

private function download():void
{
var request:URLRequest = new URLRequest(
"http://localhost:8080/xxx/DownloadExcel");
fileReference = new FileReference();
fileReference.download(request, "excel.xls");
}
]]>
</mx:Script>

<mx:Button label="Download" click="download()" />

</mx:Application>
fw176170847 2009-12-08
  • 打赏
  • 举报
回复
調用jsp或者servlet
herowach 2009-12-07
  • 打赏
  • 举报
回复
FLEX不能做IO操作,所以不能写文件,安全性考虑,AIR的可以。

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧