一、excel.as中的Action Script 处理
view plaincopy to clipboardprint?
import mx.controls.dataGridClasses.DataGridColumn;
import mx.rpc.events.AbstractEvent;
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import mx.formatters.DateFormatter;
private function exportDataToClipboard(dg:DataGrid , dataSet:ArrayCollection):void
{
var str:String = "";
var dgColumns:Array = dg.columns;
var tmp:String = "";
for(var i:Number=0; i<dgColumns.length;i++)
{
if(dgColumns[i].visible == true)
{
if(dgColumns[i].headerText != null)
{
str+= " " + dgColumns[i].headerText + "/t";
}
else
{
str+= " " + dgColumns[i].dataField + "/t"; ;
}
}
}
str += "/n";
//Now Loop thru the array collection
for (var j:int=0; j<dataSet.length; j++)
{
for (var k:int=0;k<dgColumns.length; k++)
{
if(dgColumns[k].visible == true){
if(dgColumns[k].headerText == "Date")
tmp = getDateFormatterForExcel().format(dataSet[j][dgColumns[k].dataField]) + "/t";
else
tmp = dataSet[j][dgColumns[k].dataField] + "/t";
if(tmp!=null && tmp.length > 0)
{
str+= tmp;
}
}
}
str += "/n";
}
trace(str);
System.setClipboard(str);
}
private function copyAndOpen(dg:DataGrid,dataSet:ArrayCollection):void
{
exportDataToClipboard(dg,dataSet);
ExternalInterface.call("openExcel");
}
private function getDateFormatterForExcel():DateFormatter{
var dateFormatter:DateFormatter = new mx.formatters.DateFormatter();
dateFormatter.formatString="YYYYMMDD";
return dateFormatter;
}
import mx.controls.dataGridClasses.DataGridColumn;
import mx.rpc.events.AbstractEvent;
import mx.collections.ArrayCollection;
import mx.controls.DataGrid;
import mx.formatters.DateFormatter;
private function exportDataToClipboard(dg:DataGrid , dataSet:ArrayCollection):void
{
var str:String = "";
var dgColumns:Array = dg.columns;
var tmp:String = "";
for(var i:Number=0; i<dgColumns.length;i++)
{
if(dgColumns[i].visible == true)
{
if(dgColumns[i].headerText != null)
{
str+= " " + dgColumns[i].headerText + "/t";
}
else
{
str+= " " + dgColumns[i].dataField + "/t"; ;
}
}
}
str += "/n";
//Now Loop thru the array collection
for (var j:int=0; j<dataSet.length; j++)
{
for (var k:int=0;k<dgColumns.length; k++)
{
if(dgColumns[k].visible == true){
if(dgColumns[k].headerText == "Date")
tmp = getDateFormatterForExcel().format(dataSet[j][dgColumns[k].dataField]) + "/t";
else
tmp = dataSet[j][dgColumns[k].dataField] + "/t";
if(tmp!=null && tmp.length > 0)
{
str+= tmp;
}
}
}
str += "/n";
}
trace(str);
System.setClipboard(str);
}
private function copyAndOpen(dg:DataGrid,dataSet:ArrayCollection):void
{
exportDataToClipboard(dg,dataSet);
ExternalInterface.call("openExcel");
}
private function getDateFormatterForExcel():DateFormatter{
var dateFormatter:DateFormatter = new mx.formatters.DateFormatter();
dateFormatter.formatString="YYYYMMDD";
return dateFormatter;
}
二、调用Action Script的mxml
view plaincopy to clipboardprint?
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="ascript.*" width="100%" height="100%"
title="Export To Excel" showCloseButton="true" close="removePopUp()" borderAlpha="1" borderThicknessRight="2" borderThicknessLeft="2"
borderThicknessBottom="5" resizeEffect="on" includeInLayout="true" creationComplete="initApp();">
<!--REMOTE OBJECTS -->
<mx:RemoteObject id="pnlViewHandler" destination="pnlViewHandler" result="resultHandler(event)" showBusyCursor="true" channelSet="{HostUtil.getChannelSet()}">
</mx:RemoteObject>
<mx:Script>
<!--[CDATA[
include "../ascript/excel.as";
[Bindable]
public var dataSet:ArrayCollection;
private function initApp():void{
var call:Object = null;
call = pnlViewHandler.searchDataForDataGrid(param1,param2,param3);
call.marker = "searchDataForDataGrid";
}
private function resultHandler(event:ResultEvent):void{
var call:Object = event.token;
if(call.marker == "searchDataForDataGrid"){
dataSet = event.result as ArrayCollection;
}
}
private function removePopUp():void{
PopUpManager.removePopUp(this);
}
]]-->
</mx:Script>
<mx:DataGrid name="dgClient" dataProvider="{dataSet}" id="dgClient" width="100%" height="100%" sortableColumns="true"
wordWrap="false" resizableColumns="true" enabled="true" horizontalScrollPolicy="auto" verticalScrollPolicy="auto"
lockedColumnCount="3" headerStyleName="headerStyle" allowDragSelection="false" buttonMode="false" moveEffect="on"
focusInEffect="on" headerColors="#00376F" horizontalGridLineColor="#004080" fontWeight="normal" fontStyle="normal"
fontSize="11" paddingRight="2" paddingLeft="8" textAlign="right">
<local:columns>
<mx:DataGridColumn headerText="Number" id="Number" dataField="Number" width="100" />
<mx:DataGridColumn headerText="Name" id="Name" dataField="Name" width="100" />
<mx:DataGridColumn headerText="Account" id="Acct" dataField="Acct" width="100" editable="false" />
</local:columns>
</mx:DataGrid>
<mx:LinkButton label="Export To Excel" click="copyAndOpen(dgClient,dataSet)" icon="@Embed('../images/excel.gif')" />
</mx:TitleWindow>
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" xmlns:local="ascript.*" width="100%" height="100%"
title="Export To Excel" showCloseButton="true" close="removePopUp()" borderAlpha="1" borderThicknessRight="2" borderThicknessLeft="2"
borderThicknessBottom="5" resizeEffect="on" includeInLayout="true" creationComplete="initApp();">
<!--REMOTE OBJECTS -->
<mx:RemoteObject id="pnlViewHandler" destination="pnlViewHandler" result="resultHandler(event)" showBusyCursor="true" channelSet="{HostUtil.getChannelSet()}">
</mx:RemoteObject>
<mx:Script>
<!--[CDATA[
include "../ascript/excel.as";
[Bindable]
public var dataSet:ArrayCollection;
private function initApp():void{
var call:Object = null;
call = pnlViewHandler.searchDataForDataGrid(param1,param2,param3);
call.marker = "searchDataForDataGrid";
}
private function resultHandler(event:ResultEvent):void{
var call:Object = event.token;
if(call.marker == "searchDataForDataGrid"){
dataSet = event.result as ArrayCollection;
}
}
private function removePopUp():void{
PopUpManager.removePopUp(this);
}
]]-->
</mx:Script>
<mx:DataGrid name="dgClient" dataProvider="{dataSet}" id="dgClient" width="100%" height="100%" sortableColumns="true"
wordWrap="false" resizableColumns="true" enabled="true" horizontalScrollPolicy="auto" verticalScrollPolicy="auto"
lockedColumnCount="3" headerStyleName="headerStyle" allowDragSelection="false" buttonMode="false" moveEffect="on"
focusInEffect="on" headerColors="#00376F" horizontalGridLineColor="#004080" fontWeight="normal" fontStyle="normal"
fontSize="11" paddingRight="2" paddingLeft="8" textAlign="right">
<local:columns>
<mx:DataGridColumn headerText="Number" id="Number" dataField="Number" width="100" />
<mx:DataGridColumn headerText="Name" id="Name" dataField="Name" width="100" />
<mx:DataGridColumn headerText="Account" id="Acct" dataField="Acct" width="100" editable="false" />
</local:columns>
</mx:DataGrid>
<mx:LinkButton label="Export To Excel" click="copyAndOpen(dgClient,dataSet)" icon="@Embed('../images/excel.gif')" />
</mx:TitleWindow>
三、第二步中RemoteObject调用的HostUtil.as
view plaincopy to clipboardprint?
package ascript{
public class HostUtil{
import mx.core.Application;
import mx.messaging.channels.SecureAMFChannel;
import mx.messaging.Channel;
import mx.messaging.channels.AMFChannel;
import mx.messaging.ChannelSet;
private static const REQUEST_SCHEME:String = "http";
private static const SERVER_NAME:String = "127.0.0.1";
private static const SERVER_PORT:String = "8700";
private static const CONTEXT_ROOT:String = "/pnlWebApp";
public static function getHostURL():String{
if(Application.application.parameters.hostURL != null){
return Application.application.parameters.hostURL+Application.application.parameters.hostContext;
}else{
return REQUEST_SCHEME+"://"+SERVER_NAME+":"+SERVER_PORT+CONTEXT_ROOT;
}
}
public static function getHostRootURL():String{
if(Application.application.parameters.hostURL != null){
return Application.application.parameters.hostURL;
}else{
return REQUEST_SCHEME+"://"+SERVER_NAME+":"+SERVER_PORT;
}
}
public static function getChannelSet():ChannelSet{
var cs:ChannelSet = new ChannelSet();
//HTTP Request
var amfChannel:Channel = new AMFChannel("my-amf", getHostURL()+"/messagebroker/amf");
cs.addChannel(amfChannel);
//HTTPS Request
//var secureAmfChannel:Channel = new SecureAMFChannel("my-secure-amf", getHostURL()+"/messagebroker/amfsecure");
//cs.addChannel(secureAmfChannel);
return cs;
}
}
}
package ascript{
public class HostUtil{
import mx.core.Application;
import mx.messaging.channels.SecureAMFChannel;
import mx.messaging.Channel;
import mx.messaging.channels.AMFChannel;
import mx.messaging.ChannelSet;
private static const REQUEST_SCHEME:String = "http";
private static const SERVER_NAME:String = "127.0.0.1";
private static const SERVER_PORT:String = "8700";
private static const CONTEXT_ROOT:String = "/pnlWebApp";
public static function getHostURL():String{
if(Application.application.parameters.hostURL != null){
return Application.application.parameters.hostURL+Application.application.parameters.hostContext;
}else{
return REQUEST_SCHEME+"://"+SERVER_NAME+":"+SERVER_PORT+CONTEXT_ROOT;
}
}
public static function getHostRootURL():String{
if(Application.application.parameters.hostURL != null){
return Application.application.parameters.hostURL;
}else{
return REQUEST_SCHEME+"://"+SERVER_NAME+":"+SERVER_PORT;
}
}
public static function getChannelSet():ChannelSet{
var cs:ChannelSet = new ChannelSet();
//HTTP Request
var amfChannel:Channel = new AMFChannel("my-amf", getHostURL()+"/messagebroker/amf");
cs.addChannel(amfChannel);
//HTTPS Request
//var secureAmfChannel:Channel = new SecureAMFChannel("my-secure-amf", getHostURL()+"/messagebroker/amfsecure");
//cs.addChannel(secureAmfChannel);
return cs;
}
}
}
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/lujinan858/archive/2009/07/15/4346383.aspx