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

转载于:https://www.cnblogs.com/Areas/archive/2012/06/20/2556520.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/434461.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android usb 权限广播,[Android]USB开发

第一:请求权限和请求权限回调(通过广播回调)注册一个广播接收器用于接收USB权限被同意或拒绝后发出的广播//注册USB设备权限管理广播IntentFilter filter new IntentFilter(ACTION_USB_PERMISSION); //ACTION_USB_PERMISSION为自定义的字符串context.registerRecei…

在飞音G801上运行OpenWRT+Asterisk

上篇文章介绍了如何在华硕RT-N11建立小型的SIP Server,本篇文章介绍将Asterisk移植到更为强大的VOIP网关G801上。G801是北京飞音时代的无线VoIP网关产品,在韩国SKT等运营商中广泛采用。G801支持802.11n 2T2R的无线路由,1WAN 4LAN的以太网&am…

自定义系统菜单

procedure SysMenuCommand(var Msg:TWMMENUSELECT);message WM_SYSCOMMAND;procedure TFormMain.SysMenuCommand(var Msg: TWMMenuSelect); begincase Msg.IDItem of0:beginMessageBox(0,PChar(茶杯),操作提示,MB_OKMB_ICONINFORMATION);end;1:beginMessageBox(0,PChar(书本),操…

android rsa加密工具类,GitHub - Lerist/encrypt: Android 加密解密工具包。

Encrypt(加密工具)字符串,byte[],文件等对象的加密和解密工具集合,包含了多种加密方案。加密类型摘要相关方法简单加密换一种编码格式Base64Util单向加密只能加密,不能解密MD5Util、SHAUtil对称加密使用相同的秘钥加密和解密AESUt…

开源应用架构之asterisk

作者:Russell Bryant 翻译:jiazhengfeng Asterisk[1]是一款GPLv2协议下的开源电话应用平台。简单来说,Asterisk是一个服务器应用,能够完成发起电话呼叫、接受电话呼叫、对电话呼叫进行定制处理。 Asterisk这个项目是由Mark Spen…

垃圾回收

大部分内容来自于: http://en.wikipedia.org/wiki/Garbage_collection_(computer_science) 垃圾回收(garbage collection)机制的基本原则是: 1. 找出程序中不会再被访问到的对象。 2. 回收这部分对象占用的资源(内存&a…

android 5.1 壁纸路径,RTFSC – Android5.1 壁纸设置流程简析 – RustFisher

Android5.1 壁纸设置流程浅析Ubuntu14.04 Android5.1 Source Insight3这里只是简单分析一下5.1里是如何设置壁纸的;这个流程和4.4有一些不同。但基本都是找个地方存放壁纸文件,需要的时候读取,设置的时候更新这里只看设置的过程。权当参考。…

如何在asterisk中限制呼叫路数?

在asterisk中,对于呼叫个数是可以通过call-limit进行限制的。限制办法是通过修改asterisk.conf中maxcalls参数,设置允许的最大呼叫数。这里的最大呼叫数是包括所有的呼叫数,出境、入境、分机间等呼叫。 为了分别限制出境/入境/分机间呼叫&…

总结DevExpress10个使用技巧

DevExpress是非常主流的.NET控件,目前全世界和中国都用很多用户使用,不过由于是英文版,初次接触的同学可能会觉得困难,这里就总结DevExpress常见的10个使用技巧。1.TextEditor(barEditItem)取文本 string editValue barEditItem1…

linux组成,Linux学习笔记之Linux组成及初识

1、常见的CPU架构:X86X64M68000ARMUltrasparcPower2、CPU的指令集精简指令集----Power复杂指令集----Intel3、使用汇编语言编写的Operation System 是很难移植在其他系统上系统是支持交叉编译的,但是需告知编译器编译的目标硬件规格是什么编译完成后的系…

WCF系列(1)—— CustomBehavior 入门

由于最近工作一直在做wcf平台上的开发,所以决定先结合自己平时工作中的经验实践写一个WCF的系列,希望能对大家有所帮助。 首先,说到WCF,就不得不提Endpoint这个概念,而Endpoint则由ABC组成,Adress,Binding和…

Asterisk 可加载模块

app_adsiprog.so > (Asterisk ADSI Programming Application) ——用于支持模拟显示服务接口的终端设备,在终端屏幕上操作菜单等。 app_amd.so > (Answering Machine Detection Application) ——用于外呼时终端应答状态检测 app_authenticate.so > (Aut…

android电梯程序设计,课内资源 - 基于Android实现的电梯调度模拟

一、使用说明1.1 项目简介某一楼有20层,操作者可以通过使用5部电梯从起始楼层来到达指定的楼层。本项目通过实现电梯调度,来模拟实现操作系统的调度过程,并且学习Android环境下使用Java的多线程编程方法以及调度算法。1.2 项目要求操作者可以…

默认构造函数的作用(“A”方法没有采用“0”个参数的重载

构造函数主要用来初始化对象。它又分为静态(static)和实例(instance)构造函数两种类别。大家应该都了解如何来写类的构造函数,这里只说下默认构造函数的作用,以及在类中保留默认构造函数的重要性。实际上,我说错了。正确的说法是:…

SourceInsight 设置点滴

SourceInsight是个强大的代码阅读工具, 价格不菲, 目前除了SlickEdit几乎没有可以与之抗衡的, 可能感觉没什么竞争对手的缘故,SI很少更新。SI的设置选项比较多, 这里说几个比较隐蔽的设置: 1. 改变SI的一些…

asp.net 根据当前时间计算是否股票、期货、黄金交易日期

很简单的一个方法: 股票:每周1到周五,上午9:30到11:30 下午13:00 到15:00 期货:每周1到周五,上午9:00到11:30 下午13:30到15:00 黄金:每周1到周五,上午9:00到11:30 下午13:30到15:…

android mac 照片恢复,如何找回Android手机删除的照片?这方法你肯定不知道

安卓手机怎么恢复误删的照片?如何找回Android手机照片?现在大多数人都喜欢用手机拍照存照片,慢慢的,手机中的照片自然而然就会变多,而照片是最占内存的。当你照片达到一定数量,内存快满的时候,连照片都拍不了。所以就…

Asterisk配置文件说明

Asterisk配置文件说明列表 名称 描述 asterisk.conf 主配置文件,通知Asterisk环境目录位置,包含其他所有配置文件所包含的目录,缺省Asterisk会在/etc/asterisk/目录下找到,也可以通过命令参数使用不同的asterisk.conf zaptel.…

apple watch3连android,Apple watch 可以连android手机吗?

在iOS 8.2正式版更新以后,在手机界面上就多出了一个“Apple Watch”的新图标,这是专门针对苹果新产品Apple Watch的应用,主要作用就是连接iPhone和Apple Watch,并未Apple Watch下载应用。打开“Apple Watch”首先进入的是“我的手…

关闭弹出窗体,刷新父页面

parent.location.reload(); window.opener.location.hrefwindow.opener.location.href; 转载于:https://www.cnblogs.com/xbding/archive/2012/07/03/2574660.html