ExcelManager--基于.Net的Excel读写管理类库(一)

这是前段时间写Excel读写类,近段时间逛到些技术论坛看好多朋友也在做这方面的内容,于是决定把自己做的开源出来,供大学交流使用,好的地方尽可使用,不足之处,也欢迎拍砖。(注:此管理类库已经通过vs.net2003下测试)

相关使用手册

ExcelManager(V1.1)手册

修订历史记录

日期

版本

说明

作者

<?XML:NAMESPACE PREFIX = ST1 /><chsdate isrocdate="False" islunardate="False" day="25" month="5" year="2006" w:st="on"><span>2006-5-25</span></chsdate>

1.0

初稿

林付国

<chsdate isrocdate="False" islunardate="False" day="27" month="5" year="2006" w:st="on"><span>2006-5-27</span></chsdate>

1.1

增加约束及注意事项

林付国

目录

一、目标... 2

二、功能... 2

三、约束... 2

四、注意事项... 2

六、适用范围... 3

五、性能测试... 3

六、使用方法... 3

七、版权... 6

一、目标

ExcelManager的目标,便是设计一个基于.Net的通用的Excel读写管理类库,以简化基于.Net平台的Excel应用开发。

二、功能

目前,ExcelManager主要关注以下几个方面:

1.      文件读取

2.      文件某单元格读取

3.      文件写入

4.      包括样式的某单元格写入

三、约束

1.      执行导出机器上需要装有Office组件,且Excel文件版本在2000以上

2.      读取Excel文件,在第一行必须依次存储二个范围,用于限定参数状态位,依次为:需要读取的起始单元格名称,结束单元格名称

3.      需读取的每个Excel数据文件,必须有于之配对的同名XML架构文件(扩展项可支持不同文件名,不推荐此项)

4.      写文件时,推荐先建立空Excel文件(扩展项可支持自动创建Excel文件,不推荐此项)

5.      当前版本主要实现大数据量的读写操作,对逐Cell读写及Cell格式设置方面暂不涉及

6.      其它约束按照.Net框架及Microsoft Office Excel相关约定。

四、注意事项

1.        Excel读文件目前仅支持单工作簿,单工作表读取

2.        使用读写功能时需要指定当前操作Sheet表(默认为Sheet1),请使用索引枚举EnumType.SheetIndex方式

3.        写Excel文件,提供(普通,ReWrite重写,Append追加)三种操作方式;普通方式为正常情况下对新文件写入,重写是对原数据进行覆盖性重写,追加则是在指定Sheet之后追加数据,若进行大数据量写入操作,请用此项。 “重写”和“追加”操作中,若写入时超过当前Sheet最大容量则自动创建Sheet表继续写入

4.        写入数据量的大小要求单次写入:60000行以内,255列以内,Cell值长度1-255字符,目前写操作仅支持单工作簿,最大存在32个Sheet,每Sheet最大存储量为60000行

5.        写入数据时,若不对Sheet重命名,请设置SheetName属性为空值,按照Excel约定SheetName的名称不能超过32字符

6.        本版本暂不提供数据插入功能

六、适用范围

此操作类库适用与.NET平台下的Windows应用程序及Web应用程序

五、性能测试

环境:WindowsXP、Pentium(R)4 CPU 2.8GHZ、512MB内存。

Excel单文件追加测试结果:

数据量           时间

5W               7S

15W              26S

25W              41S

40W              59S

50W              1:24S

60W              1:39S

60W              1:52S

100W            3:27S

六、使用方法

引用 las.foundation.Interfaces,las.foundation.ExcelManager,las.foundation.SmartExcel

1.读取Excel文件

ReadFile
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 DataSet ds = new DataSet();
 2
 3                            IExcelManager iex = null;
 4
 5                            try
 6
 7                            
 8
 9                                     iex = ExcelManagerFactory.Instance().CreateExcelManager();
10
11                                     iex.FilePath =需读取文件名;
12
13                                     if (Xml架构文件 != "")
14
15                                     {
16
17                                               iex.XMLFilePath =Xml架构文件;
18
19                                     }
20
21                                     iex.Open();
22
23                                     // 指定当前读取的工作表,用索引方式(Sheet1—Sheet32)
24
25                                     iex.ActiveSheet(EnumType.SheetIndex.Sheet1);
26
27                                     ds = iex.Read();
28
29                            }
30
31                            catch(Exception ex)
32
33                            {
34
35                                     MessageBox.Show(ex.Message.ToString());
36
37                            }
38
39                            finally
40
41                            {
42
43                                     if(iex != null)
44
45                                     {
46
47                                               iex.Close();
48
49                                     }
50
51                            }
52
53

2.读取Cell单元格

ReadCell
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1IExcelManager iex = null;          
 2
 3                     try
 4
 5                     
 6
 7                            iex = ExcelManagerFactory.Instance().CreateExcelManager();
 8
 9                            iex.FilePath = 读取的文件名;
10
11if (Xml架构文件 != "")
12
13                                     {
14
15                                               iex.XMLFilePath =Xml架构文件;
16
17                                     }
18
19                            iex.Open();
20
21                                     // 指定当前读取的工作表,用索引方式(Sheet1—Sheet32)
22
23                                     iex.ActiveSheet(EnumType.SheetIndex.Sheet1);
24
25                            strRet = iex.ReadCell(单元格名称);
26
27                     }
28
29                     catch(Exception ex)
30
31                     {
32
33                            MessageBox.Show(ex.Message.ToString());
34
35                     }
36
37                     finally
38
39                     {
40
41                            if(iex != null)
42
43                            {
44
45                                   iex.Close();   
46
47                            }
48
49                     }
50
51

3.写入文件

WriteFile
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1 IExcelManager iex = null;          
 2
 3                     string strPa = "";
 4
 5                     strPa = this.txtFileName.Text;                                                          
 6
 7                     try
 8
 9                     {
10
11                            iex = ExcelManagerFactory.Instance().CreateExcelManager();
12
13                            iex.FilePath = strPa;
14
15                            iex.DataSource = 数据源;
16
17                            iex.WriteType = EnumType.WriteType.None;
18
19                            iex.SheetName = 设置Sheet名称
20
21                            iex.OpenCreate();
22
23                                     // 指定当前读取的工作表,用索引方式(Sheet1—Sheet32)
24
25                                     iex.ActiveSheet(EnumType.SheetIndex.Sheet1);
26
27                            iex.Write();
28
29                            // 重写数据
30
31//iex.ReWrite(重写开始行);
32
33                     }
34
35                     catch(Exception ex)
36
37                     {
38
39                            MessageBox.Show(ex.Message.ToString());
40
41                     }
42
43                     finally
44
45                     {
46
47                            if(iex != null)
48
49                            {
50
51                                   iex.Close();
52
53                            }
54
55                     }
56
57

4.写入数据至某单元格

WriteCell
<!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--> 1IExcelManager iex = null;          
 2
 3                     string strPa = 写入的文件名;
 4
 5                     try
 6
 7                     {
 8
 9                            iex = ExcelManagerFactory.Instance().CreateExcelManager();
10
11                            iex.FilePath = strPa;
12
13                            iex.BackColor =背景颜色;
14
15                            iex.ForeColor =字体颜色
16
17                            iex.Font = 字体样式;
18
19                           iex.OpenCreate();                     
20
21                                               // 指定当前读取的工作表,用索引方式(Sheet1—Sheet32)
22
23                                               iex.ActiveSheet(EnumType.SheetIndex.Sheet1);      
24
25    iex.WriteCell(行,列,写入值);
26
27                            }
28
29                     catch(Exception ex)
30
31                     {
32
33                            MessageBox.Show(ex.Message.ToString());
34
35                     }
36
37                     finally
38
39                     {
40
41                            if(iex != null)
42
43                            {
44
45                                   iex.Close();   
46
47                            }
48
49                     }
50
51                                                                      
52

五、参考:

1.        .NET操作Excel COM对象

2.        Microsoft MSDN

3.        http://support.microsoft.com/default.aspx?scid=kb;zh-cn;306023

4.        http://support.microsoft.com/kb/283667/zh-cn

5.        文件创建部分参考博客园灵感之源vb.net SmartExcel及C#SmartExcel两位朋友的方法,感谢两位朋友所付出的劳动,谢谢!
            (个人意见:鉴于此方法使用组件的问题,不建议用此方法)  如有兴趣的朋友可以查看

七、版权

ExcelManager的技术,思想都来自于网络,鉴于人人为我,我为人人,基于网络,服务于网络的原则,大家可以自由借鉴其中好的部分。当然由于各种原因,此版本仅到1.1版本,其中内部还有很多地方存在不足,需要完善,有时间我会继续完善,有机会参考java中的javaExcelAPI的进行更好的实现。

如果你有更好的想法,请不吝赐教,其它相关服务可以与我联系(MSN:linfuguo@hotmail.com)。

、设计图
1.User Case

2.基本类图

3.写入文件序列图

4.读取文件序列图

ExcelManager--基于.Net的Excel读写管理类库(一)相关推荐

  1. ExcelManager--基于.Net的Excel读写管理类库(二) 转载

    下面是此管理类库的接口类描述,以及相关源码文档使用手册等. 在仅使用时直接引用两个管理类(在DLL.rar包中)即可. 欢迎大家指点... 接口类   1/**//* ---------------- ...

  2. 基于Python的Excel读写操作--内容超详细,值得排排坐

    今日份超详细的解读,Excel文件基础操作,让你以学就会. 写这个的原因是,一位群友问了很久,然后网上的教程写的又不是很详细,看的有些犯迷糊,所以我今日份写一份超详细的基本操作,让你打下良好的基础. ...

  3. php excel读写,phpGrace 工具类库 - excel 读写操作

    功能说明 excel 读写操作基于 PHPExecl 类库,可以方便的对 Excel 进行操作. 部署说明下载 PHPExcel.zip 解压后将全部文件部署到 phpGrace/tools 下 调用 ...

  4. VS2010 对Excel读写操作

    VS2010对Excel读写操作 一.开发环境 编程环境 VS2010 office版本 office 2010 注意 :这里office版本号不一定非得和vs版本号一致. 二.基本实现功能 基本实现 ...

  5. VS2010 对Excel读写操作

    https://blog.csdn.net/ywx123_/article/details/77074038 VS2010对Excel读写操作 一.开发环境 编程环境 VS2010 office版本 ...

  6. 【造轮子】打造一个简单的万能Excel读写工具

    大家工作或者平时是不是经常遇到要读写一些简单格式的Excel? shit!~很蛋疼,因为之前吹牛,就搞了个这东西,还算是挺实用,和大家分享下. 厌烦了每次搞简单类型的Excel读写?不怕~来,喜欢流式 ...

  7. 基于VB和EXCEL的报表设计及打印

    基于VB和EXCEL的报表设计及打印           文/朱诗兵 高栓               在现代管理信息系统的开发中,经常涉及到数据信息的分析.加工,       最终还需把统计结果形成 ...

  8. 【无代码体验】用鲸智搭替换Excel表管理数据

    背景 在工作中经常会用到Excel进行管理数据,但是随着数据量的增加.移动办公要求.数据共享要求的需求,会暴露这样那样的问题,例如: Excel在移动端难易操作和管理 Excel无法做到精细化权限管控 ...

  9. linux 拍照软件有哪些,六款基于Linux的开源照片管理软件推荐

    六款基于Linux的开源照片管理软件推荐,哪吒游戏网给大家带来详细的六款基于Linux的开源照片管理软件推荐介绍,大家可以阅读一下,希望这篇六款基于Linux的开源照片管理软件推荐可以给你带来参考价值 ...

最新文章

  1. 如何实现少样本学习?先让神经网络get√视觉比较能力
  2. Cognos报表展示图片小技巧
  3. 慎用window.showModalDialog()
  4. CDN > 域名管理 > 访问控制 > URL鉴权配置 > URL鉴权
  5. PowerDesigner的基本使用
  6. cout一位小数_C++ cout 如何保留小数输出
  7. 值得收藏!教你如何在火星直播中使用分享码
  8. 思科 计算机网络 期末考试答案
  9. 常用泰勒、微积分公式
  10. 腾讯认证QQ空间秒升级为专业版方法!
  11. android studio 前言中不允许有内容。
  12. hdu 3966 树链剖分
  13. Nexus 6p 刷入TWRP和OPENGAPPS
  14. 信息系统高级项目管理师英语词汇(一)-常见计算机技术词汇
  15. Python操作json文件
  16. MySQL 怎么插入10天前的日期_使用 MySQL 的 SQL_MODE 有哪些坑,你知道么?
  17. linux 内存清理 释放命令,linux 内存清理释放命令(示例代码)
  18. Oracle-SQL中日期加减一年的写法
  19. Android:Gradle 依赖相关
  20. HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out.

热门文章

  1. Median(POJ-3579)
  2. 一个人的旅行(HDU-2066)
  3. 回文质数(洛谷-P1217)
  4. 有一门课不及格的学生(信息学奥赛一本通-T1048)
  5. 9.2 LSMW程序创建操作手册 第3 4步
  6. php7数据库备份还原,基于thinkphp的数据库在线备份还原
  7. Debian、Ubuntu源码编译制作安装包(二)
  8. 01 | 从神经元说起:数学篇
  9. 操作系统中的一些基本概念
  10. Php学习准备(环境)