原創|其它|編輯:郝浩|2012-10-17 17:32:50.000|閱讀 831 次
概述:將數據庫數據導出為Excel格式的表格想必是大家很常用的功能。那么在Extjs又該怎么鳥呢?先前在網上查的方案是用其自帶的com對象,浪費了好幾天時間連生成一個excel模板都沒搞定,無奈放棄。繼而大牛推薦用Aspose.Cells,發現非常簡單而且效果也不錯。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
將數據庫數據導出為Excel格式的表格想必是大家很常用的功能。那么在Extjs又該怎么鳥呢?先前在網上查的方案是用其自帶的com對象,浪費了好幾天時間連生成一個excel模板都沒搞定,無奈放棄。繼而大牛推薦用Aspose.Cells,發現非常簡單而且效果也不錯。
首先下載一個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})
生成的Excel:
需要注意的是,后臺生成的dataset名稱(Table)要與Excel模板中的一致。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@ke049m.cn
文章轉載自:Suixufeng的專欄——CSDN