天天看點

報表中的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模闆)