报表中的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

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

如下:

var sql = @"select * from Customers
                    where Customers.City ='London'";
        var dt=GetDataTable(sql);
        dt.TableName = "Customers";        
        WorkbookDesigner designer = new WorkbookDesigner();
        designer.Open(MapPath("~/1.xls"));
        //数据源
        designer.SetDataSource(dt);
        //报表单位
        designer.SetDataSource("ReportUtils", "xxxxx有限公司客户信息");
        designer.SetDataSource("ReportAdd", "London");
        //截止日期
        designer.SetDataSource("ReportDate", DateTime.Now.ToString("yyyy年MM月dd日"));       

        designer.Process();

        designer.Save(string.Format("report.xls"), SaveType.OpenInExcel, FileFormatType.Excel2003, Response);
        Response.Flush();
        Response.Close();
        designer = null;
        Response.End();

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

{95%_{ZS19KN3U_1{MX{I5G

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

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

Excel模板2:Northwind的Order Details表

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

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

var order = GetDataTable(@"select * from [Order Details]
                        where [Order Details].OrderID=10248");
        order.TableName = "Order";

designer.SetDataSource(order);

Excel效果:

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

 Excel模板下载 全部代码:

protected void Page_Load(object sender, EventArgs e)
   {
       var s=Aspose.Cells.CellsHelper.GetVersion();  
       var sql = @"select * from Customers
                   where Customers.City ='London'";
       var dt=GetDataTable(sql);
       dt.TableName = "Customers";
       var order = GetDataTable(@"select * from [Order Details]
                       where [Order Details].OrderID=10248");
       order.TableName = "Order";
       WorkbookDesigner designer = new WorkbookDesigner();
       designer.Open(MapPath("~/1.xls"));
       //数据源
       designer.SetDataSource(dt);
       designer.SetDataSource(order);
       //报表单位
       designer.SetDataSource("ReportUtils", "xxxxx有限公司客户信息");
       designer.SetDataSource("ReportAdd", "London");
       //截止日期
       designer.SetDataSource("ReportDate", DateTime.Now.ToString("yyyy年MM月dd日"));       

       designer.Process();

       designer.Save(string.Format("report.xls"), SaveType.OpenInExcel, FileFormatType.Excel2003, Response);
       Response.Flush();
       Response.Close();
       designer = null;
       Response.End();
   }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值