MecGridエクスポートExcel


MecGridはオープンソースのレポートコンポーネントで、小日本で書かれているようですが、機能が強いのはソースコードを公表しないことです.公式に提供されているExcelのエクスポート機能はAir専用です(webのflexプログラムにはFile類がないので)、コードを見てwebも実現できると思います.
具体的な考え方は,生成したバイナリデータをサーバ側に転送し,サーバからファイルを生成することである.
具体的なコードは以下の通りです.
フロント:
private function makeExcelFile(event:Event):void
{
	var exp:MecExporter = new MecExporter();
	exp.charset = "UTF-8";
	exp.AddDataGrid(mgrid, "");
	var ebt:ByteArray = exp.Export2BiffExcel();
	var param:Object=new Object();
	param.data=ebt;
	param.path="tools";
	param.fileName="mecgrid";
	JdbcService.getInstance(true).callfunc("UserService","exportExcel",param,null,null);
//	var f:File= event.target as File;
//	var fs:FileStream = new FileStream();
//	fs.open(f, FileMode.WRITE);
//	fs.writeBytes(ebt);
//	fs.close();
}

バックグラウンド:
/**
	 * Creates the excel.MECGrid  Excel
	 * 
	 * @param param the param
	 * 
	 * @return the string                null
	 */
	public String createExcel(ASObject param){
		String path=(String) param.get("path");
		String fileName=(String)param.get("fileName");
		String uri=FlexContext.getServletContext().getRealPath("");
		//1               
		String inPath=uri+"/upload/"+path+"/"+fileName;
		//2 MecGrid       
		byte[] b=(byte[]) param.get("data");
	    BufferedOutputStream stream = null;
        File file = null;
        try {
        	logger.debug("  Excel  "+inPath);
            file = new File(inPath);
            FileOutputStream fstream = new FileOutputStream(file);
            stream = new BufferedOutputStream(fstream);
            stream.write(b);
        } catch (Exception e) {
        	logger.debug(e.getMessage(),e);
        	logger.info("  excel     ");
        	return null;
        } finally {
            if (stream != null) {
                try {
                    stream.close();
                } catch (IOException e1) {
                	logger.debug(e1.getMessage(),e1);
                }
            }
        }
        return inPath;
	}

 
備考:最初はネットで資料を調べましたが、airでexcelファイルを生成するしかないという人がいました.公式の例を見て、webでexcelをエクスポートできると思います.