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/archive/2011/03/21/Aspose_Cells_Template1.html

  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/Areas/p/2556520.html
Copyright © 2011-2022 走看看