8

如何将数据网格中的数据导出到Flex中的Excel文件?

谁能为此提供一些例子?我正在浏览,但找不到一个这样的例子。

编辑

浏览了很多,发现如何将 datagrid 数据转换为 csv 格式。现在如何将其转换为excel?有没有办法在不使用任何服务器脚本的情况下做到这一点?不能单独在 Flex 中完成吗?

4

6 回答 6

3

as3xls供您编写 xls 文件。它只支持一张纸(但我认为这很好)。

但我认为,如果您不需要使用 excel 函数(如单元格公式),则使用 @susichan 和 @Rafal Ziolkowski 所述的 csv 或 html 会更简单。

哦,还有用于编写 csv的csvlib 。对于 html,像写 XML 那样做就可以了。

于 2009-11-02T09:43:06.687 回答
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 回答
1

如果您有 Java servlet 后端,则可以使用 servlet 来输出文件。

我唯一的Flex想法是将CSV数据输出到带有文本区域的弹出窗口,用户可以将其复制并粘贴到文件中。

于 2009-11-02T09:26:56.277 回答
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 回答