Olá Rui. Já fiz o código para passar para o excel e tens duas opções, ou
transformando os dados da grid em formato Html ou em Csv. Eu uso o formato
html pk fica mais bonito. De seguida tá o código que utilizo.
****************************************Código**************************************************
private function convertDGToHTMLTable(dg:*):void
{
str = '';
var font:String = dg.getStyle('fontFamily');
var size:String =
(int(dg.getStyle('fontSize'))-2).toString(); //Reduz em 2, o tamanho da
fonte.
var colors:String = '';
var style:String =
'style="font-family:'+font+';font-size:'+size+'pt;"';
var hcolor:Array;
if(dg.getStyle("headerColor") != undefined) {
hcolor = [dg.getStyle("headerColor")];
} else {
hcolor = dg.getStyle("headerColors");
}
str+= '<table width="'+dg.width+'"><thead><tr
width="'+dg.width+'" style="background-color:#'
+Number((hcolor[0])).toString(16)+'">';
for(var i:int = 0;i<dg.columns.length;i++) {
colors = dg.getStyle("themeColor");
if(dg.columns[i].headerText != undefined &&
dg.columns[i].visible == true) {
str+="<th
"+style+">"+dg.columns[i].headerText+"</th>";
} else if (dg.columns[i].visible == true) {
str+= "<th
"+style+">"+dg.columns[i].dataField+"</th>";
}
}
str += "</tr></thead><tbody>";
colors = dg.getStyle("alternatingRowColors");
for(var j:int =0;j<dg.dataProvider.length;j++) {
str+="<tr width=\""+Math.ceil(dg.width)+"\">";
for(var k:int=0; k < dg.columns.length; k++) {
if(dg.dataProvider.getItemAt(j) != undefined &&
dg.dataProvider.getItemAt(j) != null && dg.columns[k].visible == true &&
dg.columns[k].dataField != "Melhor") {
if(dg.columns[k].labelFunction != undefined &&
dg.columns[k].labelFunction != null && dg.columns[k].visible == true) {
str += "<td nowrap=\"nowrap\"
width=\""+Math.ceil(dg.columns[k].width)+"\"
"+style+">"+dg.columns[k].labelFunction(dg.dataProvider[j],dg.columns[k])+"</td>";
} else {
str += "<td nowrap=\"nowrap\"
width=\""+Math.ceil(dg.columns[k].width)+"\"
"+style+">"+dg.dataProvider.getItemAt(j)[dg.columns[k].dataField]+"</td>";
}
}
}
str += "</tr>";
}
str+="</tbody></table>";
saveFile();
}
public function saveFile():void
{
saveFileRef = new FileReference();
saveFileRef.addEventListener(Event.SELECT,
onSaveFileSelected);
//this will throw a window for user to select the location
//and file name to save. Second argument is the default name
saveFileRef.save(str,"HistoricoGeral.xls");
}
****************************************************************************************
Depois só tens de chamar pela função convertDGToHTMLTable colocando a grid
que queres enviar.
Cumprimentos
Luís Costa
2009/4/17 Rui Costa <[email protected]>
>
> Boas pessoal,
>
> Este "novo" FileReference é realmente muito fofinho, ainda assim para
> escrever num excel acho algo complicado pois ele manda tudo para a
> mesma celula, alguma ideia de como meter as coisas mais bonitinhas?
>
> Rui
>
> On 14 Abr, 18:50, Luis Costa <[email protected]> wrote:
> > Confere rui, tinhas razão.
> > Já conseguir criar na minha aplicação uma maneira de criar os ficheiros
> no
> > computador. É necessário alterar a versão do flash player com que o
> projecto
> > está a ser criado pois a função FileReference é da biblioteca do flash e
> tal
> > como disseste só no 10 é que está actualizado para isso.
> >
> > Link para alterar tudo do projecto para flash 10:
> http://opensource.adobe.com/wiki/display/flexsdk/Targeting+Flash+Play...
> >
> > Função para criar qualquer tipo de ficheiro a partir de uma aplicação
> Flex:
> >
> > public function saveFile():void
> > {
> > saveFileRef = new FileReference();
> > saveFileRef.addEventListener(Event.SELECT,
> > onSaveFileSelected);
> > //this will throw a window for user to select the
> location
> > //and file name to save. Second argument is the default
> name
> > saveFileRef.save("Ola mundo","Teste.xls");
> > }
> >
> > Sendo o "Ola Mundo" o que queremos que o ficheiro tenha e o "Teste.xls" o
> > nome do documento e a respecitva extensão pretendida.
> >
> > Obrigado a todos
> > Luís Costa
> >
> > 2009/4/14 rui <[email protected]>
> >
> >
> >
> > > Luis Costa wrote:
> > > > Pois, mas o objectivo é o utilizador não estar no Japão e ter de
> > > > aceder ao servidor em Portugal para criar um ficheiro com os dados
> que
> > > > já estão no lado da aplicação. Se eles já estão ali no browser tem de
> > > > haver um jeito de os exportar sem ser necessário ir ao servidor
> novamente
> >
> > > > 2009/4/14 Miguel Vaz <[email protected] <mailto:
> [email protected]>>
> >
> > > > Acho que a partir do flex 3 não é possivel, por motivos de
> > > > segurança, mas é-o utilizando alguma outra linguagem de
> > > > "suporte"/servidor. Eu utilizo PHP, com a qual podes, utilizando
> o
> > > > flex como "front-end", criar e gerir ficheiros, etc. Existem
> > > > outras linguagens e línguas, como é óbvio, como o sueco, ASP,
> > > > esperanto, java, e afins.
> >
> > > > MV
> >
> > > > 2009/4/14 Luis Costa <[email protected]
> > > > <mailto:[email protected]>>
> >
> > > > Alguém tem um ideia fácil de como a partir duma aplicação
> Flex
> > > > 3 criar um ficheiro txt a dizer "Olá mundo"?
> >
> > > > Cumprimentos
> > > > Luís Costa
> >
> > > ja dei a resposta 2 vezes -.-
> >
> > > e a mim alguem me ajuda?http://bugs.adobe.com/jira/browse/FCM-11
> >
>
--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "Mailing List da Comunidade
Portuguesa de Rich Internet Applications - www.riapt.org" do Grupos Google.
Para enviar mensagens para este grupo, envie um email para
[email protected]
Para anular a inscrição neste grupo, envie um email para
[email protected]
Para mais opções, visite este grupo em
http://groups.google.com/group/riapt?hl=pt-PT
-~----------~----~----~----~------~----~------~--~---