zoukankan      html  css  js  c++  java
  • 报表中的Excel操作之Aspose.Cells(Excel模板)

          本篇中将简单记录下Aspose.Cells这个强大的Excel操作组件。这个组件的强大之处,就不多说,对于我们的报表总是会有导出Excel的处理,如果你使用微软Excel的com组件,那么对于简单的操作还行,但是多余复杂的模板,那将是一个令人头疼的事。在Aspose.Cells之下,将是一个简单的事情。他可以导入导出excel操作,在本节将要说的就是他的际遇excel模板的导出强大功能。

        多的不说,我们先来利用Northwind做两个小demo。先说说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))

    还有其他更为复杂的汇总计算的表达式,这里也不在这节多讲,有兴趣的朋友,可以去官网看看。我们先来个简单的例子,光说,总是不行的,还是要代码实践才能说明一切:

    Excel模板1:

    excelTemplate1

    代码:在我们的代码中添加数据源:

    如下:

    View Code
     1 var sql = @"select * from Customers 
     2                     where Customers.City ='London'"
     3         var dt=GetDataTable(sql); 
     4         dt.TableName = "Customers";         
     5         WorkbookDesigner designer = new WorkbookDesigner(); 
     6         designer.Open(MapPath("~/1.xls")); 
     7         //数据源 
     8         designer.SetDataSource(dt); 
     9         //报表单位 
    10         designer.SetDataSource("ReportUtils""xxxxx有限公司客户信息"); 
    11         designer.SetDataSource("ReportAdd""London"); 
    12         //截止日期 
    13         designer.SetDataSource("ReportDate", DateTime.Now.ToString("yyyy年MM月dd日"));        
    14 
    15         designer.Process(); 
    16 
    17         designer.Save(string.Format("report.xls"), SaveType.OpenInExcel, FileFormatType.Excel2003, Response); 
    18         Response.Flush(); 
    19         Response.Close(); 
    20         designer = null
    21         Response.End();

    代码很简单,就是添加了一个datatable,和几个变量的数据源,我们所生成excel为:

    {95%_{ZS19KN3U_1{MX{I5G

    这就完成了我们的一个简单的多表头数据导出报表。

    Demo2中我们将来尝试下他的统计公式和函数计算(利用&=&=计算):

    Excel模板2:Northwind的Order Details表

    4~0N[~6TS338$PV53N%7MLR

    代码:和上面不同的就只有几句:

    View Code
    1 var order = GetDataTable(@"select * from [Order Details] 
    2                         where [Order Details].OrderID=10248"); 
    3         order.TableName = "Order";
    4 
    5 designer.SetDataSource(order);

    Excel效果:

    )U5{C(`}@4KH7LIRLY`N8VL

     Excel模板下载 全部代码:

    View Code
     1 protected void Page_Load(object sender, EventArgs e) 
     2    { 
     3        var s=Aspose.Cells.CellsHelper.GetVersion();   
     4        var sql = @"select * from Customers 
     5                    where Customers.City ='London'"
     6        var dt=GetDataTable(sql); 
     7        dt.TableName = "Customers"
     8        var order = GetDataTable(@"select * from [Order Details] 
     9                        where [Order Details].OrderID=10248"); 
    10        order.TableName = "Order"
    11        WorkbookDesigner designer = new WorkbookDesigner(); 
    12        designer.Open(MapPath("~/1.xls")); 
    13        //数据源 
    14        designer.SetDataSource(dt); 
    15        designer.SetDataSource(order); 
    16        //报表单位 
    17        designer.SetDataSource("ReportUtils""xxxxx有限公司客户信息"); 
    18        designer.SetDataSource("ReportAdd""London"); 
    19        //截止日期 
    20        designer.SetDataSource("ReportDate", DateTime.Now.ToString("yyyy年MM月dd日"));        
    21 
    22        designer.Process(); 
    23 
    24        designer.Save(string.Format("report.xls"), SaveType.OpenInExcel, FileFormatType.Excel2003, Response); 
    25        Response.Flush(); 
    26        Response.Close(); 
    27        designer = null
    28        Response.End(); 
    29    }


    作者:破  狼
    出处:http://www.cnblogs.com/whitewolf/
    本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。该文章也同时发布在我的独立博客中-个人独立博客博客园--破狼51CTO--破狼

  • 相关阅读:
    Android 课程设计
    第十个作业 简易通讯录
    第九个作业 QQ的账号密码保存
    第八个作业 QQ账号的保存
    第七个作业 Activity之间的数据回传
    第六个作业 应用列表
    第五个作业 背景换色
    JSP第一次作业
    安卓课设
    Android第八次作业
  • 原文地址:https://www.cnblogs.com/whitewolf/p/Aspose_Cells_Template1.html
Copyright © 2011-2022 走看看