Как экспортировать сетку данных в файл Excel во Flex? - PullRequest
8 голосов
/ 02 ноября 2009

Как экспортировать данные из моей таблицы данных в файл Excel в Flex ?

Может ли кто-нибудь привести некоторые примеры для этого? Я просматриваю, но не смог найти ни одного примера такого рода.

EDIT

Много просмотрел и узнал, как конвертировать данные сетки данных в формат CSV. Теперь, как преобразовать это в Excel? Есть ли способ сделать это без использования какого-либо серверного скрипта? Разве это не может быть сделано только во Flex?

Ответы [ 6 ]

3 голосов
/ 02 ноября 2009

Существует as3xls для вас запись файла xls . Он поддерживает только один лист (но я думаю, что это нормально).

Но я думаю, что использовать csv или html, как заявлено @susichan и @Rafal Ziolkowski, будет проще, если вам не нужно использовать функции Excel (например, формулу ячейки).

Да, и есть csvlib для написания CSV. Для html, делайте так, как будто написание XML будет хорошо.

1 голос
/ 08 декабря 2011

Сначала скачайте 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);
            }
        }
1 голос
/ 02 ноября 2009

Если у вас есть серверная часть Java-сервлета, вы можете использовать сервлет для вывода файла.

Моя единственная Flex - единственная идея состояла в том, чтобы вывести данные CSV во всплывающее окно с текстовой областью, которая может быть скопирована и вставлена ​​пользователем в файл.

1 голос
/ 02 ноября 2009

Excel читает таблицу HTML как своего рода электронную таблицу. Просто прочитайте сетку строка за строкой, столбец за столбцом, создайте набор ячеек таблицы HTML и создайте файл с именем любую.

0 голосов
/ 03 февраля 2011

as3xls, кажется, отлично читает, но написание файлов Excel - другая история. Он не может писать многолистовые книги, он [большую часть времени] не может читать свои собственные файлы, и когда Excel может прочитать то, что выдает as3xls, вы должны сделать несколько сохранений, чтобы вынести весь мусор. Настоящий облом. Я работаю над использованием NativeProcess в AIR 2.0 для вызова сценария Python для написания, и я предполагаю, что сначала мне придется экспортировать datagrid / ArrayCollection в CSV ... кажется, что это довольно далеко. Не могу поверить, что нет лучшего варианта ActionScript для гадания с Excel. Это действительно такая редкая задача?

0 голосов
/ 20 ноября 2009
...