MecGridエクスポートExcel
MecGridはオープンソースのレポートコンポーネントで、小日本で書かれているようですが、機能が強いのはソースコードを公表しないことです.公式に提供されているExcelのエクスポート機能はAir専用です(webのflexプログラムにはFile類がないので)、コードを見てwebも実現できると思います.
具体的な考え方は,生成したバイナリデータをサーバ側に転送し,サーバからファイルを生成することである.
具体的なコードは以下の通りです.
フロント:
バックグラウンド:
備考:最初はネットで資料を調べましたが、airでexcelファイルを生成するしかないという人がいました.公式の例を見て、webでexcelをエクスポートできると思います.
具体的な考え方は,生成したバイナリデータをサーバ側に転送し,サーバからファイルを生成することである.
具体的なコードは以下の通りです.
フロント:
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をエクスポートできると思います.