플렉스를 만지다보면 엑셀 파일을 파싱한다거나 , 또 가공한 데이터를 엑셀 파일로 저장해야 하는경우가 종종 있다.
이럴때 as3xml를 사용하면 쉽게 엑셀 파일을 읽고 쓸수 있다.
먼저 엑셀파일을 읽어 오는 방법 부터 정리 한다.
사이트에서 다운 받은 as3xml.swc 파일을 프로젝트 라이브러리에 등록시킨 후 아래와 같은 방법으로 구현 가능
private var fr:FileReference;
private var ef:ExcelFile; //엑셀 파일
private function init():void{
fr = new FileReference(); //파일 레퍼런스를 하나 생성한다.
var fileFilter:FileFilter = new FileFilter("Excel (.xls)", "*.xls;"); //파일 필더 생성
fr.addEventListener(Event.SELECT, selectXLS); // 파일 레퍼런스에 이벤트 리스너 등록
fr.browse([fileFilter]); //파일 필터 등록
}
private function selectXLS(e:Event):void {
fr = FileReference(e.target); // 파일을 열었을때 해당 파일의 타깃으로 한다.
fr.addEventListener(Event.COMPLETE, fileRead); // 이벤트 리스너 등록(로드 완료후 fileRead 실행)
fr.load(); //파일을 로드 한다.
}
privaet function fileRead(e:Event):void{
var ba:byteArray = fr.data; // 읽어온 데이터를 ba에 대입
ef.loadFromByteArray(ba); // 읽어온 데이터를 엑셀파일 변수에 연결
var sheet:Sheet = ef.sheets[0];
var value:String = sheet.getCell(0,0).value; //0,0의 위치에 있는 데이터를 대입
myDataGrid.dataProvider = sheet.values; // 해당 데이터를 데이터 그리드에 표시
}
다음 엑셀파일을 쓰는 방법을 정리 한다. 쓰는 법은 더욱 간단하다 .
var sheet:Sheet = new Sheet(); //sheet를 하나 만들어 준뒤
sheet.resize(10, 10) // 요건 잘;;
resize는 무슨 역활인지는 잘 모르겠으나 최초에 한번만 수행해주면 된다.
heet.setCell(0, 0, "hello"); // 다음 0,0에 해당하는 셀에 hello라는 값을 저장
sheet.setCell(0, 1, new Date()); // 0,1에 날짜를 저장
var xls:ExcelFile = new ExcelFile(); // 엑셀 파일 변수를 하나 생성
xls.sheets.addItem(sheet); // 엑셀 파일 변수에 sheets에 앞서 생성한 sheet를 추가
var bytes:ByteArray = xls.saveToByteArray(); // 파일로 저장하기위해 byteArray로 엑셀파일 변수의 sheet 정보를 bytes에 저장
fr = new FileReference(); // 파일 레퍼런스를 하나 만들어 주고
fr.addEventListener(Event.COMPLETE, onFileSave); // 이벤트 리스너를 달아 준뒤
fr.save(bytes, "test.xls"); // test.xls 라는 파일명으로 저장
이렇게 해서 심플하게 엑셀 파일 읽기와 쓰기가 가능하다.
나중 까먹을지도 모르니 심플하게 작성된 해당 소스파일을 첨부한다.
참참~!! 기본적으로는 as3xls가 한글을 지원하지 않지만 구글링을 통해 한글도 지원하는 라이브러리 파일을 첨부한다.
이상 끝~!!!
참고싸이트 : http://code.google.com/p/as3xls/wiki/Tutorial , http://myboor.tistory.com/3
파일 첨부 :