Extjs中使用Aspose.Cells将数据导出为Excel表格

原创|其它|编辑:郝浩|2012-10-17 17:32:50.000|阅读 553 次

概述:将数据库数据导出为Excel格式的表格想必是大家很常用的功能。那么在Extjs又该怎么鸟呢?先前在网上查的方案是用其自带的com对象,浪费了好几天时间连生成一个excel模板都没搞定,无奈放弃。继而大牛推荐用Aspose.Cells,发现非常简单而且效果也不错。

相关链接:

将数据库数据导出为Excel格式的表格想必是大家很常用的功能。那么在Extjs又该怎么鸟呢?先前在网上查的方案是用其自带的com对象,浪费了好几天时间连生成一个excel模板都没搞定,无奈放弃。继而大牛推荐用Aspose.Cells,发现非常简单而且效果也不错。

  1. &=DataSource.Field,&=[DataSource].[Field]是对DataTable和几何类型的引用,将会从当前行开始竖直向下生成多行数据。
  2. &=$data:是对变量或数组的引用。数组存在skiphorizontal属性。
  3. &=&=动态公式计算;{r}当前行,{c}当前列,{-n},{n}当前行或列的偏移量前n或后n。
  4. &==是动态计算,如excel,if等语句。(if(logic_test,true_value,false_value))

首先下载一个Aspose.Cells.dll文件并包含在项目中。

在Extjs中的导出函数如下

//执行导出的操作
    exportExcel: function () {
        if (!Ext.fly('frmDummy')) {
            var frm = document.createElement('form');
            frm.id = 'frmDummy';
            frm.name = id;
            frm.className = 'x-hidden';
            document.body.appendChild(frm);
        }
        Ext.Ajax.request({
            url: 'URL/Export.aspx',
            method: 'POST',
            form: Ext.fly('frmDummy'),
            isUpload: true,
            params: { file: 'UsersDesigner', name: escape('用户') }//file为excel模板的文件名,name为导出后的excel文件名
        });
}

后台获取数据在Export.cs示例代码如下

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Reflection;
using System.Drawing;
using System.Data.SqlClient;
using System.Text;
using Aspose.Cells;

public partial class URL_Export : System.Web.UI.Page
{
    private string subtitle;
    protected void Page_Load(object sender, EventArgs e)
    {
        string file = Request.Form["file"];
        string name = Server.UrlDecode(Request.Form["name"].ToString());

        DataSet ds = ;//要导出的数据源
        WorkbookDesigner designer = new WorkbookDesigner();

        string path = MapPath("~/Designer/" + file + ".xls");//模版路径
        designer.Open(path);

        designer.SetDataSource(ds);
        designer.SetDataSource("subtitle", subtitle);

        designer.Process();
        HttpBrowserCapabilities bc = HttpContext.Current.Request.Browser;
        string filename = "";
        if (bc.Browser == "IE")
            filename = HttpUtility.UrlEncode(name, System.Text.Encoding.UTF8) + ".xls";
        else
            filename = name + ".xls";
        designer.Save(filename, SaveType.OpenInExcel, FileFormatType.Default, this.Response);
    }
}

Exel模板:

自动生成序号一列写法为:&=&=IF($A{-1}="序号",1,($A{-1}+1))

列求和:&=&=sum(C4:C{-1})

Extjs中使用Aspose.Cells将数据导出为Excel表格

生成的Excel:

Extjs中使用Aspose.Cells将数据导出为Excel表格

需要注意的是,后台生成的dataset名称(Table)要与Excel模板中的一致。

Extjs中使用Aspose.Cells将数据导出为Excel表格



标签:Java.NET文档管理Excel

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果

文章转载自:Suixufeng的专栏——CSDN

登录 慧都网发表评论


暂无评论...

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关厂商
相关产品
Aspose.Cells

专业的电子表格控件,无需MS Excel也可满足一切Excel表格功能。

购物车 在线客服 在线QQ 电话咨询
400-700-1020
反馈
在线客服系统
live chat