flex 导出Excel功能实现
方法一:
1.Excel导出主要代码:
try
{
var bytes: ByteArray = new ByteArray();
bytes.writeMultiByte(DataGridExporter.exportSCV(dataGrid),"cn-gb");
var fr:FileReference = new FileReference();
var date:Date = new Date();
var dateTime:String = date.fullYear.toString() + "年" + (Number(date.month) + 1).toString() + "月" + date.date.toString() + "日";
var excelName:String = dateTime + filename;
fr.save(bytes,excelName);
}
catch(e:Error)
{
MapUni.errorWindow(e.toString());
}
2.调用的类DataGridExporter:
public class DataGridExporter
{
public function DataGridExporter()
{
}
public static function exportSCV(dg:DataGrid,csvSeparator:String="\t",lineSeparator:String="\n"):String
{
var dataStr:String="";
var columns:Array=dg.columns;
var columnCount:int=columns.length;
var column:DataGridColumn;
var header:String="";
var headerGenerated:Boolean=false;
var dataProvider:Object=dg.dataProvider;
var rowCount:int=dataProvider.length;
var dp:Object=null;
var cursor:IViewCursor=dataProvider.createCursor();
var j:int = 0;
while(!cursor.afterLast)
{
var obj:Object=null;
obj = cursor.current;
for(var k:int = 0; k <columnCount;k++)
{
column=columns[k];
if(!column.visible)
{
continue;
}
dataStr += "\""+column.itemToLabel(obj)+"\"";
if(k<(columnCount-1))
{
dataStr+=csvSeparator;
}
if(!headerGenerated)
{
header+="\""+column.headerText+"\"";
if(k<(columnCount-1))
{
header+=csvSeparator;
}
}
}
headerGenerated=true;
if(j<(rowCount-1))
{
dataStr+=lineSeparator;
}
j++;
cursor.moveNext();
}
dataProvider=null;
columns=null;
column=null;
return (header+"\r\n"+dataStr);
}
方法二:
1.var excelFactory:SaveExcelField = new SaveExcelField();
excelFactory.ExportToExcel(dataGrid, "hendText",true);
public function ExportToExcel(dataGrid:DataGrid,filename:String, allData:Boolean):void
{
try
{
var fields:Array = new Array();
var sheet:Sheet = new Sheet();
var dataProviderCollection:ArrayCollection =dataGrid.dataProvider as ArrayCollection;
var i:int = 0;
var columns:Array = dataGrid.columns;
var rowCount:int = dataProviderCollection.length;
if(allData)
{
sheet.resize(rowCount+1,dataGrid.columnCount);
columns.pop();
}
else
{
sheet.resize(rowCount+1,dataGrid.columnCount);
/*
for (var m:int=0;m<columns.length;m++)
{
var field1:DataGridColumn=columns[m] as DataGridColumn;
//var field:DataGridColumn in columns
fields.push(field1.dataField.toString());
sheet.setCell(0,i,field1.headerText.toString());
i++;
}*/
}
//sheet.resize(rowCount+1,dataGrid.columnCount-1);
for each (var field:DataGridColumn in columns)
{
fields.push(field.dataField.toString());
sheet.setCell(0,i,field.headerText.toString());
i++;
}
for(var r:int=0;r<rowCount;r++)
{
var record:Object =dataProviderCollection.getItemAt(r);
insertRecordInSheet(r+1,sheet,record,fields);
}
var xls:ExcelFile = new ExcelFile();
xls.sheets.addItem(sheet);
var bytes: ByteArray = xls.saveToByteArray();
var fr:FileReference = new FileReference();
fr.save(bytes,filename);
}
catch(e:Error)
{
MapUni.errorWindow(e.toString());
}
}
flex 导出Excel功能实现的更多相关文章
- Atitit.导出excel功能的设计 与解决方案
Atitit.导出excel功能的设计 与解决方案 1.1. 项目起源于背景1 1.2. Js jquery方案(推荐)jquery.table2excel1 1.3. 服务器方案2 1.4. 详细 ...
- 项目笔记:导出Excel功能
1.前台这块: var ids=""; $.post("${basePath}/assets/unRegDeviceAction_getDeviceIds.do" ...
- 项目笔记:导出Excel功能分sheet页插入数据
导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN&quo ...
- vue项目导出EXCEL功能
因为一些原因导出EXCEL功能必须前端来做,所以就研究了一下,在网上也找了一些文章来看,有一些不完整,我做完了就记录下来,供大家参考: 1.首先先安装依赖: npm install file-save ...
- Vue通过Blob对象实现导出Excel功能
不同的项目有不同的导出需求,有些只导出当前所显示结果页面的表格进入excel,这个时候就有很多插件,比如vue-json-excel或者是Blob.js+Export2Excel.js来实现导出Exc ...
- dataTables的导出Excel功能
Datatables它是一款基于jQuery表格插件,钟情于它操作dom的灵活.做后台的同学想必使用它能事半功倍,而且交互强.容易扩展. 我也是最近要做公司后台界面,表格涉及的很多,所以考虑使用DT, ...
- layui + mvc + ajax 导出Excel功能
为了更方便,没基础的伙伴更容易理解,我尽量详细简便 省了很多代码,一步一步的试 自己引入文件 1. html 前端视图代码 Layui的数据绑定 全部代码 @{ Layout = null; } &l ...
- asp.net core web的导入导出excel功能
这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core ...
- Django Admin中增加导出Excel功能
参考: https://www.cnblogs.com/yoyo008/p/9232805.html 在使用Django Admin时, 对于列表我们有时需要提供数据导出功能, 如下图: 在Djang ...
随机推荐
- Fragment实现延迟加载
import android.support.v4.app.Fragment; public abstract class BaseFragment extends Fragment { /** Fr ...
- codeforces194a
link:http://codeforces.com/contest/334/problem/A 很有意思的一道构造题.发现CF上经常出这种不难但是很不错的构造题. #include <iost ...
- HttpSendRequest同步请求不返回
HttpSendRequest是基于socket实现的 在工作过程中发现当发送请求时 1.当网络没有连接时 会同步返回失败 2.当发送请求时 把网线拔下也是会同步返回失败 3.但是第三种情况 发送请求 ...
- 关于 MAXScript 如何剪切文件夹
MAXScript 中可以对文件进行创建删除复制等操作但是唯独不能删除文件夹... 网上搜了一下批处理的剪切方法,在 MAXScript 里调用一下就好了 fn xcopy oldfile newfi ...
- 【Unity3D基础教程】给初学者看的Unity教程(三):通过制作Flappy Bird了解Native 2D中的Sprite,Animation
作者:王选易,出处:http://www.cnblogs.com/neverdie/ 欢迎转载,也请保留这段声明.如果你喜欢这篇文章,请点[推荐].谢谢! 引子 上一次我们讲了MonoBehaviou ...
- setsockopt 设置 SO_LINGER 选项
setsockopt 设置 SO_LINGER 选项 最近和后台的server通信 server发现在读数据的时候 客户端已经关闭连接 ,也就是 没有等服务器读完数据,客户端已经fclose了, 联 ...
- JavaScript 中的window.event代表的是事件的状态,jquery事件对象属性,jquery中如何使用event.target
http://wenda.haosou.com/q/1373868839069215 http://kylines.iteye.com/blog/1660236 http://www.cnblogs. ...
- 【转载】开发备必:WEB前端开发规范文档
规范目的 为提高团队协作效率, 便于后台人员添加功能及前端后期优化维护, 输出高质量的文档, 特制订此文档. 本规范文档一经确认, 前端开发人员必 须按本文档规范进行前台页面开发. 本文档如有不对或者 ...
- TOMCAT如何建立两个端口或服务
近日,一个客户需要将系统放到公网上,局网测试的时候用的8080,但该端口已经被其它应用占用,但又不想更改之前的端口,于是查了下资料,以供后阅 针对客户的这个情况,只是说想增加一个端口,这时只需要去to ...
- HackerRank "Larry's Array"
I caught the sparkle in my mind and got AC1 ! It is a great great experience ! So the basic idea: pe ...