8

データグリッドのデータをFlexのExcelファイルにエクスポートするにはどうすればよいですか?

誰かがその例を提供できますか? 私は閲覧していますが、そのような例は1つも見つかりませんでした。

編集

たくさん閲覧して、データグリッドデータをcsv形式に変換する方法を見つけました。今それをExcelに変換する方法は?サーバースクリプトを使用せずにそれを行う方法はありますか? Flex だけではできないのですか?

4

6 に答える 6

3

xlsファイルを書き込むためのas3xlsがあります。1枚しかサポートしていません(でもそれでいいと思います)。

しかし、@susichanと@RafalZiolkowskiが述べているようにcsvまたはhtmlを使用する方が、Excel関数(セル式など)を使用する必要がない場合は、より簡単になると思います。

ああ、 csvを書くためのcsvlibがあります。HTMLの場合、XMLを記述しても問題ないようにします。

于 2009-11-02T09:43:06.687 に答える
1

Javaサーブレットバックエンドがある場合は、サーブレットを使用してファイルを出力できます。

私の唯一のFlexのみのアイデアは、CSVデータを、ユーザーがコピーしてファイルに貼り付けることができるテキストエリアを含むポップアップに出力することでした。

于 2009-11-02T09:26:56.277 に答える
1

まず、次のリンクから swc ファイルをダウンロードします。

リンク

次に、そのコードをコピーして列名を適切に指定するだけで、少し作業を行う必要があります。

public function roExport_export_Result(e:ResultEvent):void
        {
            if(e.result.length != 0)
            {
                btnExportToExcel.enabled = true;

                var arrExportResult:Array = e.result as Array;

                xlsFile = new ExcelFile();
                var sheet:Sheet = new Sheet();

                sheet.resize(arrExportResult.length+1,14);

                sheet.setCell(0,0,'Id');
                sheet.setCell(0,1,'Full Name');
                sheet.setCell(0,2,'Gender');
                sheet.setCell(0,3,'Birth Date');
                sheet.setCell(0,4,'College Name');
                sheet.setCell(0,5,'Qualification');
                sheet.setCell(0,6,'Email Id');
                sheet.setCell(0,7,'Mobile');
                sheet.setCell(0,8,'Position Applied For');
                sheet.setCell(0,9,'Technology Interested');
                sheet.setCell(0,10,'User Name');
                sheet.setCell(0,11,'Password');
                sheet.setCell(0,12,'Exam Date');
                sheet.setCell(0,13,'Percentage');
                sheet.setCell(0,14,'IsActive');

                for(var i:int=0;i<arrExportResult.length;i++)
                {
                    sheet.setCell(i+1, 0, arrExportResult[i].Id);
                    sheet.setCell(i+1, 1, arrExportResult[i].FullName);
                    if(arrExportResult[i].Gender == 1)
                    {
                        arrExportResult[i].Gender = "Male"
                    }
                    else
                    {
                        arrExportResult[i].Gender = "Female";
                    }
                    sheet.setCell(i+1, 2, arrExportResult[i].Gender);
                    var date:String = arrExportResult[i].BirthDate.date.toString();
                    var month:String = (arrExportResult[i].BirthDate.month + 1).toString();
                    var year:String = arrExportResult[i].BirthDate.fullYear.toString();
                    var bDate:String = date + "/" + month + "/" + year;
                    arrExportResult[i].BirthDate = bDate;
                    sheet.setCell(i+1, 3, arrExportResult[i].BirthDate);
                    sheet.setCell(i+1, 4, arrExportResult[i].CollegeId);
                    sheet.setCell(i+1, 5, arrExportResult[i].QualificationId);
                    sheet.setCell(i+1, 6, arrExportResult[i].EmailId);
                    sheet.setCell(i+1, 7, arrExportResult[i].Mobile);
                    sheet.setCell(i+1, 8, arrExportResult[i].PositionName);
                    sheet.setCell(i+1, 9, arrExportResult[i].TechForTraining);
                    sheet.setCell(i+1, 10, arrExportResult[i].UserName);
                    sheet.setCell(i+1, 11, arrExportResult[i].Password);
                    var date:String = arrExportResult[i].CreatedDate.date.toString();
                    var month:String = (arrExportResult[i].CreatedDate.month + 1).toString();
                    var year:String = arrExportResult[i].CreatedDate.fullYear.toString();
                    var hour:String = arrExportResult[i].CreatedDate.hours.toString();
                    var min:String = arrExportResult[i].CreatedDate.minutes.toString();
                    var sec:String = arrExportResult[i].CreatedDate.seconds.toString();
                    var cDate:String = date + "/" + month + "/" + year + " " + hour + ":" + min + ":" + sec;
                    arrExportResult[i].CreatedDate = cDate;
                    sheet.setCell(i+1, 12, arrExportResult[i].CreatedDate);
                    sheet.setCell(i+1, 13, arrExportResult[i].Percentage);
                    sheet.setCell(i+1, 14, arrExportResult[i].IsActive);
                }

                dataGridResult.dataProvider = arrExportResult;

                xlsFile.sheets.addItem(sheet);      
                bytes = xlsFile.saveToByteArray();                  
            }
            else
            {
                arrExportResult = new Array();
                dataGridResult.dataProvider = arrExportResult;
                btnExportToExcel.enabled = false;
                xlsFile = new ExcelFile();
                var sheet:Sheet = new Sheet();
                Alert.show("No Records Found",parentApplication.alertTitle);
            }
        }
于 2011-12-08T10:02:03.157 に答える
1

Excel は、HTMLテーブルを一種のスプレッドシートとして読み取ります。グリッドを行ごと、列ごとに読み取り、一連の HTML テーブル セルを生成し、whatever.xls という名前のファイルを生成します。

于 2009-11-02T09:24:27.343 に答える
0

ここにあなたの答えがあります

http://learnflexair.wordpress.com/category/uncategorized/air/

于 2009-11-20T10:48:29.347 に答える
0

as3xls は正常に読み取れるようですが、Excel ファイルの書き込みは別の話です。マルチシート ワークブックを書き込むことはできず、[ほとんどの場合] 独自のファイルを読み取ることもできません。また、Excel が as3xls が吐き出したものを読み取ることができる場合、すべてのガベージを取り出すために複数の保存を行う必要があります。本当に残念です。私はAIR 2.0のNativeProcessを使用してPythonスクリプトを呼び出して書き込みを行うことに取り組んでおり、最初にdatagrid/ArrayCollectionをCSVにエクスポートする必要があると思います...長い道のりのようです. Excel をいじるには、これ以上の ActionScript オプションがないとは信じられません。それは本当に珍しい仕事ですか?

于 2011-02-03T15:32:06.673 に答える