博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解析和生成Excel报表方法汇总::.NET发现之旅(七)
阅读量:7126 次
发布时间:2019-06-28

本文共 3077 字,大约阅读时间需要 10 分钟。

昨天在医院检查身体时,一个朋友打过来电话,咨询EXCEL报表开发都有哪些方法,他们要上一个有200多个不同格式Excel报表的项目,虽然在医院做全身检查中,我还是给他提供了几点建议。在这里我顺便总结下.NET平台下Excel报表开发的各种方法吧,供大家参考。

 
其实不仅仅是.NET
平台,其他的任务开发平台和EXCEL
报表交互,最终都会面临2
个问题:如何解析EXCEL
报表和如何生成EXCEL
报表。
下面就以这2
个问题为出发点,来探讨一下各种方法。
方法一:通过
Excel
对象模型
(COM
接口
)
解析和生成
EXCEL
报表。
.NET
访问Office
对象模型是借鉴于VBA
的,VBA
是整合到所有Office
应用程序中的一个简单开发环境,每个Office
程序都带有丰富的对象模型并通过COM
技术实现对这些模型的访问。但遗憾的的是VBA
有一定的局限性,VBA
的开发环境过于简单,功能有限,VBA
将代码嵌入到每个自定义文档中,这就使得修复漏洞和更新解决方案变得困难。微软为了让老的VBA
程序员过渡到.NET
平台继续开发Office
程序,就进行技术更新,产生一种称为COM interop
.NET
技术与.NET
中的Office
对象模型进行交互。本质上所有的Office
对象模型都是用非托管代码编写的(
比如C
C++)
,并提供COM
接口。为了在托管代码(C#
VB.NET)
中与这些接口进行通信,必须使用封装器,通过它来实现托段代码与Office
的非托管COM
接口之间的协同工作。该封装器是一系列的.NET
类,它有一个更好的名字叫Office
主互调程序集(PIA:Primary Interop Assemblies)
PIA
便是.NET
用于和Office
交互的托管程序集。如下图:
 
这种方法能解析和生成 EXCEL
文档,功能强大,可以读写到任意单元格,生成单元格样式,合并单元格,支持图表等等。可以在 .NET
任何项目中使用,但会面临释放托管资源的问题。很多朋友认为这种方法必须要装 EXCEL
程序 (Office)
,其实只需要安装 PIA
就可以了。 PIA
会在完全安装 Office
时自动安装,也可以在安装 Office
的向导中选择。但有个更好的方法是单独安装和分发 PIA
,微软想到了这一点,你可以通过下面的链接单独获取 PIA
的分发包。
Office 2003 Update: Redistributable Primary Interop Assemblies
http://www.microsoft.com/downloads/details.aspx?FamilyID=3c9a983a-ac14-4125-8ba0-d36d67e0f4ad&DisplayLang=en
2007 Microsoft Office System Update: Redistributable Primary Interop Assemblies
http://www.microsoft.com/downloads/details.aspx?familyid=59DAEBAA-BED4-4282-A28C-B864D8BFA513&displaylang=en
 
Office PIA
会被安装到 GAC
目录, GAC
位于 Windows
目下的 Assembly
子目录。
 
如果要使用 PIA
必须要先在项目中添加引用,如下图:
 
Excel 2007
PIA
12.0
,如上图。 Excel 2003PIA
的是 11.0
方法二:通过
OLEDb
解析
Excel
报表。
OleDb
解析 Excel
报表,本质上是通过 OleDb
驱动完成的,此时可以把 Excel
当做一张数据库表来读取, Excel 2003
用的驱动是
Microsoft.Jet.OLEDB.4.0  
Excel 2007
用的驱动是
Microsoft.Ace.OleDb.12.0
,OleDb
在解析Excel功能上比较简单,实际项目中往往运用此方法来获取Excel数据,如下图:
 
方法三:通过
Access
对象模型
(COM
接口
)
生成
EXCEL
报表。
此方法同方法一技术上类似,但是此时引用的 PIA
不是 Excel
的,而是 Access
的。如下图:
 
Access 2007
PIA
12.0
,如上图。 Access 2003PIA
的是 11.0
通过 Access PIA
,可以把 Access 
数据库中的表完美快速的生成到 Excel
工作薄中,可以同时生成多个工作表,速度非常之快,日期类型,货币类型,长格式数值,都会自动转成文本,不存在 ’#’
或科学计数的问题。
方法四:通过开放
Open Xml
生成
Excel
报表
这种方法是基于 Office Open Xml
的,服务器和客户端都不需要安装 Excel
,可以在 .NET
任何项目中使用,开发难度高,但部署成本比较低。在格式方面, Open Xml
对单元格样式控制能力很强,可以生成各种格式的单元,生成 Excel
的效率也非常高。
下图的中
2
个标注的地方都运用了这种技术生成
Excel
报表。
 
方法五:通过水晶报表和微软报表生成
Excel
报表
水晶报表功能强大,能生成复杂 Excel
报表,但是它是收费的。
而微软报表 (Microsoft RepoertViewer)
功能强大,本质上是微软借鉴水晶报表开发的,所以和水晶报表没什么两样,而且直接集成到了 Visual Studio
中。微软报表可以在 .NET
任何项目中使用,不仅可以生成 EXCEL
报表,还可以生成 PDF
等。下图是微软报表的一个应用,这个报表默认是横向打印:
 
说到这,不得不提微软数据库系统中的 SSRS
,这个报表服务引擎非常强大,不仅包含创建报表的功能,还包括管理和访问报表的功能,这是一个真正的企业级报表平台。
 
 
方法六:通过构建
HTML
标签向客户端生成
Excel
报表。
这种方法,在 asp.net
项目中很常见,尤其是在生成中国式的报表项目中非常常用。这种方法首先是构造 HTML
标签,生成指定的格式,填充数据,最后发送客户端,保存成 Excel
报表格式。当然这种发放就更不需要安装 Excel
程序了。
 
方法七:通过构造
CVS
格式生成
EXCEL
报表。
这种方法只能生成无格式的 Excel
报表,不需要安装 Excel
程序。
 
方法八:通过开源软件解析和生成
Excel
报表(基于
BIFF
)。
开源项目中有
2
个解析和生成
Excel
文件的精品:
Koogra
Myxls
,他们都是基于
BINARY FILE FORMAT(BIFF)
Excel
文件结构形式开发的。运用这个开源项目进行解析和生成
Excel
报表都不需要安装
Office
,部署方便。
Koogra
用于解析
Excel
文件。
Myxls
用于生成
Excel
文件。
 
先总结这8种方法,但是实际上还有其他的方法,比如强大的Active-x报表等等。
本文转自terryli51CTO博客,原文链接:http://blog.51cto.com/terryli/372820 ,如需转载请自行联系原作者
你可能感兴趣的文章
[转载] 人工智能:一种现代方法——第3章 用搜索法对问题求解
查看>>
[转载] 民兵葛二蛋——第29集
查看>>
Luogu P2570 [ZJOI2010]贪吃的老鼠
查看>>
使用Jmeter3.1进行接口测试(包含需登录后测试的接口)
查看>>
subset标签过滤集合元素
查看>>
反射机制
查看>>
Linux定时任务Crontab
查看>>
线程的几种可运行状态
查看>>
[bzoj 2555]Substring
查看>>
tab标签
查看>>
ecshop新增银联企业网银支付方式
查看>>
Angular5学习笔记 - 配置NG-ZORRO(八)
查看>>
使用Netty实现HTTP服务器
查看>>
JAVA开发工具eclipse中@author怎么改
查看>>
存储引擎与锁
查看>>
sqlog连接虚拟机mysql服务
查看>>
出错,网页显示不出内容
查看>>
Spring中的后置处理器BeanPostProcessor讲解
查看>>
《FPGA全程进阶---实战演练》第十四章 蜂鸣器操作
查看>>
浅析firmware完整生存和使用流程 【转】
查看>>