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功能实现

时间: 2024-10-27 09:11:33

flex 导出Excel功能实现的相关文章

扩展GridView导出Excel功能

using System;using System.Collections.Generic;using System.IO;using System.Linq;using System.Runtime.CompilerServices;using System.Text;using System.Web;using System.Web.Compilation;using System.Web.UI;using System.Web.UI.WebControls; namespace Web{ 

项目笔记:导出Excel功能分sheet页插入数据

导出Excel功能分sheet页处理数据: /*导出EXCEL*/ public void createExcel() { log.info("导出Excel功能已经启动-BEGIN"); JxlUtil jsl = new JxlUtil(); List<Device> dataList =new ArrayList<Device>(); List<DeviceExport> list = new ArrayList<DeviceExport

laravel-admin 自定义导出excel功能,并导出图片

https://www.jianshu.com/p/91975f66427d 最近用laravel-admin在做一个小项目,其中用到了excel导出功能. 但是laravel-admin自带的导出功能不带图片,并且导出的数据有很多冗余的字段,并非我所需要的功能. 所以参考官方文档调整代码,实现了自定义导出excel文件,并且带上图片: 步骤如下: 1. 安装laravel-excel插件 可参考laravel5.5 中使用laravel-excel composer require maatw

asp.net core web的导入导出excel功能

这里主要记录下asp.net core web页面上进行导入导出excel的操作. 主要是导入,因为现在使用的很多前端框架(例如kendo ui)本身就有导出的功能. 这里使用到EPPlus.Core,其实对于excel的导入导出还可以使用NPOI, 这里讲解EPPlus的方式 1.创建asp.net core web (mvc)项目 效果图如下 2.在项目上右键,进入nuget管理器,安装EPPlus.Core 3.添加一个XlsxController控制器,在其中添加导入和导出功能 usin

thinkphp导出excel功能封装

官网http://phpexcel.codeplex.com/下载最新PHPExcel放到tp框架的核心目录ThinkPHP里面的Vendor下 1 public function test(){ 2 $xlsName = "用户"; 3 4 //注意 数组第一个字段必须是小写 数组第二个(列标题)根据你的情况填写 5 $xlsCell = array( 6 array('字段1','账号序列'), 7 array('字段2','登录账户'), 8 array('字段3','账户昵称'

Atitit.导出excel功能的设计 与解决方案

1.1. 项目起源于背景1 1.2. Js  jquery方案(推荐)jquery.table2excel1 1.3. 服务器方案2 1.4. 详细信息2 1.5. 参考4 1.1. 项目起源于背景 正好我们项目也正好在研究更快速的导出excel的方法..昨天终于有了结论..除了我们常用的后端导出excel,前端js导出excel效果也不错,估计可以覆盖90%的领域...所以更好的导出方案就是 js导出(90%)+后端语言导出(10%),取长补短,结合使用 1.2. Js  jquery方案(推

C# 关于导出EXCEL功能

/// <summary>        /// 导出Excel数据        /// </summary>        /// <param name="search"></param>        /// <returns></returns>        public ActionResult ExportExcel(SearchEntity search)//查询条件         { List

java、jsp导出excel功能备份

问题踩坑: ajax请求不能下载文件 必须这样: <a href="/media">点击下载Excel</a> 或者 location.href = '/media'; js取表单数据: p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 20.0px Consolas; color: #788d93 } span.s1 { color: #c39900 } span.s2 { color: #2fafa9 } var s

DataTable 更改在有数据列的类型方法+DataTable 导出excel功能

/// <summary> /// 导出功能 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btn_export_Click(object sender, EventArgs e) { try { string strSql = CreateStrWhere