[原创]C#通过引用Office Excel (2007) 组件实现对Excel文件的操作

摘要:
它可以操作Excel文件,直接输出WEB页面中的控件等,并直接引用Office的Excel组件。此文件相当于之间的接口(Interop)。NET托管代码和OfficeCOM组件。也就是说,它与Excel中编辑的文件完全一致。2.C#代码可以控制Excel内部工作表,服务器必须安装与开发环境相同版本的Excel;

对用应用软件来说,将报表转出为Excel文件,进行二次加工,或者根据Excel模版填充数据,是非常常用的。实现对Excel文件的操作,如将报表转出为Excel或根据已有的Excel模版进行填充,有很多方法,比如使用第三方组件,根据Open XML的标准,将WEB页面中的控件直接输出等等,还有一种方式就是引用Office Excel组件,直接由.NET程序调用。即在项目的“引用(References)”处直接引用Office的Excel组件,这时,系统自动会生成一个Microsoft.Office.Interop.Excel.dll的文件,此文件相当于.NET 托管代码与Office COM组件的一个接口(Interop)。

这样做有其优缺点,

优点:

1. 生成的Excel文件,完全(100%)符合Excel规范,即与用Excel编辑的文件完全一致

2. C#代码可以控制Excel内部的sheet,可以指定其立即刷新,如刷新Pivot Table

缺点:

1. 采用B/S架构时,服务器端必须与开发环境安装有同一个版本的Excel;采用C/S结构时,使用转出(生成)Excel文件的客户端必须与开发环境安装有同一个版本的Excel。

2. 使用Excel组件时,必须注意释放资源、关闭Excel进程、优化填充Excel的方法

下面,将结合本人的一些项目经验,谈谈如何在ASP.NET下,使用Office Excel (2007) 组件,将已经定义好的Excel模版填充数据,然后返回客户端。 (http://skywind.cnblogs.com

1.添加Excel组件的引用:

clip_image002[5]

2.打开需要填充的Excel模版,(我的项目中的做法是在这之前,先根据模版复制一份为需要填充的Excel模版)

clip_image004[4]

3.填充Excel

clip_image006[4]

这里面有两个提高填充效率和俗得的小的技巧

l 对于一个Range型的区域的数据,可以通过object[,]作为一个中介,整理好后一次性的插入Excel文件中;

l 操作时,对其Value2属性进行操作,Value2忽略单元格的格式,也可提高效率

4.刷新Pivot table等内容

clip_image008[4]

5.保存Excel文件

clip_image010[4]

6.关闭Excel进程,释放资源

clip_image012[4]

7。下载生成的Excel文件

clip_image014[4]

很遗憾,Office2007不完全遵从与OpenXML规范,据说要到Office2009才支持,到时候,对Excel操作就容易了!仅供参考,如果看官有更好的操作Excel的第三方组件或者源码推荐,欢迎交流。

免责声明:文章转载自《[原创]C#通过引用Office Excel (2007) 组件实现对Excel文件的操作》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Java实现打包下载BLOB字段中的文件vue 常见错误下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Centos中如何配置Texlive2013中文字体的问题

Centos中如何配置Texlive2013中文字体的问题: 第一步是下载你需要的字体,我从windows/fonts中拷贝的比较多,你只要复制你需要的字体即可。 注意只要文件扩展名为ttf的文件,ttc的文件不要复制。 windows/fonts中没有simkai.ttf,只有simkai.ttc,这个好办,在网上下一个simkai.ttf即可:...

07mybatis使用日志框架logback显示sql语句

java 开发领域日志框架 log4j log for java logback 来显示mybatis sql语句 1、在mybatis框架配置文件中 src/main/resource/mybatis-config.xml 加入 <settings> <setting name="logPrefix" value="dao."/>...

Android数据库相关整理

今天对Android中数据库相关的操作和代码做了一个整理,便于自己之后的查阅。主要内容有: 1.原生数据库写法 2.终端进sqlite的操作 3.第三方库 4.事务处理 5.权限和路径 一、原生数据库写法一般要先继承自SQLiteOpenHelper写一个Helper。 public class DatabaseHelper extends SQLiteO...

Centos7 中查找文件、目录、内容

1、查找文件 find / -name ‘filename’ 2、查找目录 find / -name ‘path’ -type d 3、查找内容 find . | xargs grep -ri ‘content’//find . | xargs grep -ril ‘content’ 只显示文件名称 文件类型包括:普通文件(f),目录(d),块设备文件(b...

idea配置docker

一、idea安装docker插件 欢迎页->Configure->Plugins插件使用说明 二、docker服务器开放监听端口 根据官网信息,docker默认只接受本地客户端的请求;若需要接受远程访问,可以使用docker.service系统单元文件来配置Docker以接受远程连接,该文件用于使用systemd的Linux发行版,例如RedH...

linux文件特殊属性介绍(s,s,t)

文件的权限有rwx这3个读、写、执行的权限。但是,怎么 /tmp权限有些奇怪?还有, /usr/bin/passwd也有些奇怪,怎么回事呢? [root@linux ~]# ls -ld /tmp ; ls -l /usr/bin/passwddrwxrwxrwt 5 root root 4096 Jul 20 10:00 /tmp-r-s--x--x 1...