Na verdade, é mais facil ainda se vc simplesmente mandar um HTML com
table e afins para um script serverside responder com o cabecalho de
excel e pronto :)

Rogério


On 7/2/07, Jackson Ferreira de Andrade Mafra <[EMAIL PROTECTED]> wrote:
> This is a updated version of
> http://www.cflex.net/showFileDetails.cfm?ObjectID=298&Object=File&ChannelID=1
>
> 1. Convert the datagrid data to csv string
> 2. Post data to a servlet
> 3. Servlet returns the same csv string back with content -type of the
> HTTPResponse set to "application/ms-excel"
>
>
> 1. Convert the datagrid data to csv string
> This is a generic version and should work with any datagrid.
>
> public class DataGridCSVTransformer
> {
> private static var csvSeparator : String = "\t";
> private static var lineSeparator = "\n";
>
> public static function toCSV(dg : DataGrid) : String
> {
> var str : String = "";
> for(var i : int = 0; i <>
> {
> var dgc : DataGridColumn = dg.columns[i];
> if(!dgc.visible)
> continue;
>  str += "\""+dgc.headerText+"\"";
> if(i < (dg.columnCount -1))
> str += csvSeparator;
> }
> str += "\r\n";
> var rowCount : int = dg.dataProvider.length;
>
> for(var j:int = 0; j <>
> {
> for(var k : int = 0; k <>
> {
> var dgc : DataGridColumn = dg.columns[k];
> if(!dgc.visible)
> continue;
> var obj : Object = null;
> if(dg.dataProvider is ArrayCollection)
> obj = (dg.dataProvider as ArrayCollection).getItemAt(j);
> else
> obj = (dg.dataProvider as Array)[j];
>
> str += "\""+dgc.itemToLabel(obj)+"\"";
> if(k < (dg.columnCount -1))
> str += csvSeparator;
> }
> if(j < (rowCount - 1))
>  str += lineSeparator;
> }
>
> Alert.show("String :: "+str);
> return str;
> }
> }
>
> 2. Post the CSV data to servlet
> private function doPost(event:Event) : void
> {
> var csvConverter : DataGridCSVTransformer = new DataGridCSVTransformer();
> var dgCSV : String = csvConverter.toCSV(dg);
> var url : String =
> "http://localhost:8080/flextest/reports/genreport";;
> var urlr : URLRequest = new URLRequest(url);
> urlr.method = "POST";
> var urlv : URLVariables = new URLVariables();
> urlv.reportdata = dgCSV;
> urlr.data = urlv;
> navigateToURL(urlr,"_blank");
> }
>
> 3. Servlet returns the same csv string back with content -type of the
> HTTPResponse set to "application/ms-excel"
> //No caso de Outras Linguagens exemplo PHP Troque o HTTPheader pra
> ("application/ms-excel");
> // Em asp a mesma forma...
> public void generateReport(HTTPServletRequest req,
> HTTPServletResponse res)
> throws ServletException, IOException
> {
> String csvData = req.getParameter ("reportData");
> res.setContentType("application/ms-excel");
> res.getOutputStream().print(csvData);
> }
>
>
> --
> Jackson F. de A. Mafra
> Designer e Desenvolvedor, Consultor
> Designer and  Developer, Consultant
>
>  >
>

--~--~---------~--~----~------------~-------~--~----~
Você recebeu esta mensagem porque está inscrito na lista "flexdev"
Para enviar uma mensagem, envie um e-mail para [email protected]
Para sair da lista, envie um email em branco para [EMAIL PROTECTED]
Mais opções estão disponíveis em http://groups.google.com/group/flexdev
-~----------~----~----~----~------~----~------~--~---

Responder a