天天看点

报表中的Excel操作之Aspose.Cells(Excel模板)

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

    多的不说,我们先来利用northwind做两个小demo。先说说aspose.cells的模板语法:

&=datasource.field,&=[datasource].[field]是对datatable和几何类型的引用,将会从当前行开始竖直向下生成多行数据。

&=&=动态公式计算;{r}当前行,{c}当前列,{-n},{n}当前行或列的偏移量前n或后n。

&==是动态计算,如excel,if等语句。(if(logic_test,true_value,false_value))

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

excel模板1:

报表中的Excel操作之Aspose.Cells(Excel模板)

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

如下:

报表中的Excel操作之Aspose.Cells(Excel模板)
报表中的Excel操作之Aspose.Cells(Excel模板)

 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();

报表中的Excel操作之Aspose.Cells(Excel模板)

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

报表中的Excel操作之Aspose.Cells(Excel模板)

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

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

excel模板2:northwind的order details表

报表中的Excel操作之Aspose.Cells(Excel模板)

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

报表中的Excel操作之Aspose.Cells(Excel模板)

1 var order = getdatatable(@"select * from [order details] 

2                         where [order details].orderid=10248"); 

3         order.tablename = "order";

5 designer.setdatasource(order);

excel效果:

报表中的Excel操作之Aspose.Cells(Excel模板)
报表中的Excel操作之Aspose.Cells(Excel模板)
报表中的Excel操作之Aspose.Cells(Excel模板)

 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    }

报表中的Excel操作之Aspose.Cells(Excel模板)