Excel To Flex
Önceki yazılarımda Flex ten Excel e nasıl veri gödereceğimizden bahsetmiştim. Şimdi de bunun tam tersini yapalım. Excel den veri okuyup Flex ekranında gösterelim. Bunun için ben yine as3xls kütüphanesinden yararlanacağım. Bu kütüphaneyi kullanarak çok dinamik bir şekilde verileri okuyabilirsiniz, ancak ben basit bir örnek ile açıklayacağım.
As3xls kütüphanesine okumak istediğiniz Excel i byte dizisi olarak vermeniz gerekiyor. Bunun için yüklemek istediğiniz bir Excel i seçip byte dizisi olarak bir değişkene atıyoruz. Daha sonra da bu değişkenden loadFromByteArray(değişken) methodu ile Excel i yüklüyoruz. İstediğimiz alanlara bu şekilde erişebiliyoruz. Aşağıdaki kodu projenize dahil ettikten sonra bu Excel i yükleyerek uygulamamızı test edebiliriz.
Test döküamanı için tıklayınız.
import mx.controls.Alert;
import com.as3xls.xls.Cell;
import com.as3xls.xls.Sheet;
import com.as3xls.xls.ExcelFile;
private var fileReference:FileReference;
private var xls:Class;
private var sheet:Sheet;
private function browseExcelAndUpload():void {
fileReference=new FileReference();
fileReference.addEventListener(Event.SELECT, fileReference_Select);
fileReference.addEventListener(Event.CANCEL, fileReference_Cancel);
fileReference.browse();
}
private function fileReference_Select(event:Event):void {
fileReference.addEventListener(ProgressEvent.PROGRESS, fileReference_Progress);
fileReference.addEventListener(Event.COMPLETE, fileReference_Complete);
fileReference.addEventListener(IOErrorEvent.IO_ERROR, onLoadError);
fileReference.load();
}
private function fileReference_Cancel(event:Event):void {
fileReference=null;
}
private function fileReference_Progress(event:ProgressEvent):void {
progressBar.visible=true;
progressBar.includeInLayout=true;
}
private function onLoadError():void {
Alert.show("Hata Alındı");
}
private function fileReference_Complete(event:Event):void {
var fileData:ByteArray=fileReference.data;
var excelFile:ExcelFile=new ExcelFile();
if (fileData != null && fileData.length > 0) {
excelFile.loadFromByteArray(fileData);
var sheet:Sheet=excelFile.sheets[0];
if (sheet != null) {
lblName.text = sheet.getCell(0, 1).value;
lblSurname.text = sheet.getCell(1, 1).value;
lblGender.text = sheet.getCell(2, 1).value;
}
}
progressBar.visible=false;
progressBar.includeInLayout=false;
fileReference=null;
}
]]>
</mx:Script>
<mx:Form width="100%" height="100%">
<mx:FormHeading label="Excel Import Demo" fontWeight="bold" color="#2EC200"/>
<mx:FormItem label="Browse you excel file" fontWeight="bold">
<mx:Button label="Browse" click="browseExcelAndUpload()"/>
<mx:HBox>
<mx:ProgressBar id="progressBar" includeInLayout="false" visible="false" indeterminate="true"/>
</mx:HBox>
</mx:FormItem>
<mx:FormItem label="Name" fontWeight="bold">
<mx:Label id="lblName" textAlign="center" fontSize="14" fontWeight="bold" color="red" />
</mx:FormItem>
<mx:FormItem label="Surname" fontWeight="bold">
<mx:Label id="lblSurname" textAlign="center" fontSize="14" fontWeight="bold" color="red" />
</mx:FormItem>
<mx:FormItem label="Gender" fontWeight="bold">
<mx:Label id="lblGender" textAlign="center" fontSize="14" fontWeight="bold" color="red" />
</mx:FormItem>
</mx:Form>
Kısıtlamalar ve Uyarılar
- Aşağıdaki şekilde Flash versiyonunu 10.0.22 olarak ayarlamalısınız.
- Türkçe karakterler ile ilgili sıkıntı yaşayabilirsiniz.
- Excel 2003 (.xls uzantılı) dosyalarını okur, Excel 2007 yi (.xlsx uzantılı) okumaz.

|