当前位置:  编程技术>.net/c#/asp.net

C#编程实现Excel文档中搜索文本内容的方法及思路

    来源: 互联网  发布时间:2014-10-22

    本文导语:  打开Excel的VBA帮助,查看Excel的对象模型,很容易找到完成这个功能需要的几个集合和对象:Application、Workbooks、Workbook、Worksheets还有Worksheet和Range。Application创建Excel应用,Workbooks打开Excel文档,Workbook获得Excel文档工作薄,Worksh...

打开Excel的VBA帮助,查看Excel的对象模型,很容易找到完成这个功能需要的几个集合和对象:Application、Workbooks、Workbook、Worksheets还有Worksheet和Range。Application创建Excel应用,Workbooks打开Excel文档,Workbook获得Excel文档工作薄,Worksheets操作工作表集合,Worksheet获得单个工作表。
搜索的思路对应上述集合和对象,可以这样表述:要搜索的文本可能存在Excel文档当中的某个工作表上,搜索应该遍历目标Excel文件的每个工作表中的有效区域,如果找到,则退出本次搜索,如果没有找到,则继续搜索直到完成本次搜索。   
跟Word对象模型不一样的是,Excel对象模型没有提供Find对象,不过没有关系,可以通过两种方法来实现,一个是通过Range对象的Find()方法来实现,另外一个比较麻烦,取得工作表Worksheet的有效区域UsedRange之后,遍历该Range对象中的所有行列。实际开发中,用第二种方法时发现了一个特别的现象,所以第二种方法也准备详细记述一下。   
第一步,打开Excel文档:
代码如下:

  object filename="";
  object MissingValue=Type.Missing;
  string strKeyWord=""; //指定要搜索的文本,如果有多个,则声明string[]
  Excel.Application ep=new Excel.ApplicationClass();
  Excel.Workbook ew=ep.Workbooks.Open(filename.ToString(),MissingValue,
   MissingValue,MissingValue,MissingValue,
   MissingValue,MissingValue,MissingValue,
   MissingValue,MissingValue,MissingValue,
   MissingValue,MissingValue,MissingValue,
   MissingValue);

然后准备遍历Excel工作表:
代码如下:

  Excel.Worksheet ews;
  int iEWSCnt=ew.Worksheets.Count;
  int i=0,j=0;
  Excel.Range oRange;
  object oText=strKeyWord.Trim().ToUpper();
  
  for(i=1;i=1 && oRange.Cells.Columns.Count>=1)
   {
   MessageBox.Show("文档中包含指定的关键字!","搜索结果",MessageBoxButtons.OK);
   break;
   }
  }

这里要说两个值得注意的地方。一个是遍历工作表的索引,不是从0开始,而是从1开始;另外一个是Find方法的第六个参数SearchDirection,指定搜索的方向,帮助文档中说这个参数是可选项,但是我用MissingValue如论如何编译不能通过,不知什么原因,于是显式指定它的默认值xlNext。
第一种方法实现了,再看看第二种方法。这种方法除了要遍历工作表,还要对工作表使用区域的行和列进行遍历。其它一样,只对遍历说明,代码如下:
代码如下:

  bool blFlag=false;
  int iRowCnt=0,iColCnt=0,iBgnRow,iBgnCol; 
  for(m=1;m1)?
   ews.UsedRange.Cells.Row-1:ews.UsedRange.Cells.Row;
   iBgnCol=(ews.UsedRange.Cells.Column>1)?
   ews.UsedRange.Cells.Column-1:ews.UsedRange.Cells.Column;
  
   for(i=iBgnRow;i
   {
   for(j=iBgnCol;j
   {
   strText=((Excel.Range)ews.UsedRange.Cells[i,j]).Text.ToString();
   if (strText.ToUpper().IndexOf(strKeyWord.ToUpper())>=0)
   {
   MessageBox.Show("文档中包含指定的关键字!","搜索结果",MessageBoxButtons.OK);
   }
   }
   }
  }

显然这种方法比第一种繁琐得多,不过这里有一个关于遍历单元格的索引很特别的地方,当工作表中的使用区域UsedRange为单行单列的时候,对UsedRange中的单元格遍历起始索引值为1,为多行多列的时候,起始索引值为0,不知这是Excel程序设计者出于什么样的考虑?

    
 
 

您可能感兴趣的文章:

  • C# WinForm编程获取文件物理路径的方法
  • C# winform编程中响应回车键的实现代码
  • C#窗体编程不显示最小化、最大化、关闭按钮的方法
  • c#编程之设置DataGrid控件的标题栏
  • C#编程之绑定数据到DataGrid控件
  • C# WinForm窗体编程中处理数字的正确操作方法
  • C#窗体编程(windows forms)禁止窗口最大化的方法
  • c# socket网络编程接收发送数据示例代码
  • c# socket编程udp客户端实现代码分享
  • c#并行编程示例分享
  • Base64编码解码原理及C#编程实例
  • 混合语言编程—C#使用原生的Directx和OpenGL绘图的方法
  • 访问修饰符(C# 编程指南)
  • C#网络编程基础之进程和线程详解
  • 深入分析C#异步编程详解
  • c#多线程编程基础实例解析
  • C#泛型编程实例详解
  • C#泛型编程介绍
  • C#开发之Socket网络编程TCP/IP层次模型、端口及报文等探讨
  • c#多线程编程基础
  • 求《华容道》的编程方法(思路)和源程序!!
  • 我想编程分析任意一个java文件,把其中的注释部分删掉,请帮我分析一下思路和方法好吗?
  • linux串口编程的问题,大家给我点思路和指导
  • j2ME下的编程,请给我一个思路
  • 两道关于C语言的编程问题,自己有点思路,但是不知何处下手编写代码,请高手帮忙~
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Shell编程:如何在一个文本文件中的第N行插入一行文本?
  • shell 编程关于 文本格式转换问题
  • 关于shell编程的文本处理
  • 新手上路》》》shell编程问题(操作文本文件)请高手赐教!!!!谢谢,焦急等待中
  • 想通过shell脚本编程实现:改写文本文件(完全改写和部分替换)
  • Python GUI编程:tkinter实现一个窗口并居中代码
  • 都说《UNIX环境高级编程》好,对于学linux编程好不好?《Linux下的c编程》《嵌入式系统C编程》那个更适合初学者?各是那个出版社的?(
  • 2013年7月和2013年8月编程语言排行榜
  • daemon 是属于 用户态编程 还是 内核态编程? 关于内核编程的书/资料介绍些好吗?
  • 苹果OS X和IOS下最新编程语言swift介绍
  • 请教linux下的编程的选择:我听说有gtk+gnome的编程,也有kde里的 什么编程,到底应该选择哪个呢?好象一个是技术好一点,一个是市场占有
  • 学不好编程的三个原因
  • 傻瓜问题,请问shell编程和shell脚本编程的关系
  • 半路出家转行学编程如何才能成为大牛?
  • unix编程与linux编程有什么区别?
  • 2017 年热门编程语言排行榜出炉,你的语言上榜没?
  • 我想学Linux编程,请大家推荐几本学习Linux下C/C++编程的书
  • PHP编程需要注意地方总结
  • Linux下的编程指的就是Shell编程吗?
  • PHP编程语言介绍及安装测试方法
  • linux下编程跟平时的编程有什么区别吗?
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • 那里有《shell编程》和关于curses编程的教程可以下载,请帮忙?
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 学Linux编程前要学Unix吗?哪里有学Linux编程的好书下载?
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • Linux C编程一站式学习,高级shell Bash脚本编程指南,


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3