Flex:通过Servlet导出Excel

时间:2011-12-13 20:56:24

标签: actionscript-3 flex

我希望用户按下excel按钮并提示您下载excel文件。我通常这样做:

var dest:String = excelEndpoint;

        var request:URLRequest = new URLRequest();
        request.url = dest;
        fr.download( request,'Locates.xls' );
        fr.addEventListener(HTTPStatusEvent.HTTP_STATUS, handleStatus);
        fr.addEventListener(IOErrorEvent.IO_ERROR, handleErr);

但是,现在我需要将一个对象传递给servlet。看到您无法通过URLRequest执行此操作,我尝试使用HTTPService:

var service:HTTPService = new HTTPService();
        service.url = excelEndpoint;
        service.method = "POST";
        service.showBusyCursor = true;
        service.addEventListener("result", httpResult);
        service.addEventListener("fault", httpFault);
        service.send( myObject);

现在我可以成功地将我的数据(myObject)提供给servlet,但是我没有得到提示下载。

我该怎么做?甚至可以使用HTTPService吗?

感谢任何有用的提示。

2 个答案:

答案 0 :(得分:0)

我认为您无法通过Flash Player远程请求提示用户下载内容。我过去这样做的方式有两个方面:

  1. 远程请求ping服务器,生成excel文件并将其保存到临时目录。作为调用的结果,请求会返回Flex应用程序的URL。
  2. 当Flex应用获取结果(URL)时,它会创建一个URL请求并在新窗口中弹出它,提示用户下载生成的Excel工作表。

    我没有看到一次拍摄的方法;因为Flex HTTPService调用的返回值转到Flash Player,而不是浏览器。

答案 1 :(得分:0)

解决:

我希望通过1次远程调用来完成此操作,并且在传递包含集合的对象时我发现这样做的方式是:

var uv:URLVariables = new URLVariables();
uv.typesColl = myObj.types.toString();
uv.partiesColl = myObj.parties.toString();
uv.statuses = myObj.statuses.toString();

基本上,在URLVariables对象上为每个集合创建一个属性,然后将所有集合设置为toString();

希望能有所帮助。