知识大全 C#实现在Excel文档中搜索文本

Posted

篇首语:知识就是力量,时间就是生命。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 C#实现在Excel文档中搜索文本相关的知识,希望对你有一定的参考价值。

C#实现在Excel文档中搜索文本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

打开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= j= ; Excel Range oRange; object oText=strKeyWord Trim() ToUpper(); for(i= ;i<=iEWSCnt;i++) ews=null; ews=(Excel Worksheet)ew Worksheets[i]; oRange=null; (Excel Range)oRange=((Excel Range)ews UsedRange) Find( oText MissingValue MissingValue MissingValue MissingValue Excel XlSearchDirection xlNext MissingValue MissingValue MissingValue); if (oRange!=null && oRange Cells Rows Count>= && oRange Cells Columns Count>= ) MessageBox Show( 文档中包含指定的关键字! 搜索结果 MessageBoxButtons OK); break;    这里要说两个值得注意的地方 一个是遍历工作表的索引 不是从 开始 而是从 开始 另外一个是Find方法的第六个参数SearchDirection 指定搜索的方向 帮助文档中说这个参数是可选项 但是我用MissingValue如论如何编译不能通过 不知什么原因 于是显式指定它的默认值xlNext    第一种方法实现了 再看看第二种方法 这种方法除了要遍历工作表 还要对工作表使用区域的行和列进行遍历 其它一样 只对遍历说明 代码如下 bool blFlag=false; int iRowCnt= iColCnt= iBgnRow iBgnCol; for(m= ;m<=iEWSCnt;m++) ews=(Excel Worksheet)ew Worksheets[m]; iRowCnt= +ews UsedRange Cells Rows Count; iColCnt= +ews UsedRange Cells Columns Count; iBgnRow=(ews UsedRange Cells Row> )? ews UsedRange Cells Row :ews UsedRange Cells Row; iBgnCol=(ews UsedRange Cells Column> )? ews UsedRange Cells Column :ews UsedRange Cells Column; for(i=iBgnRow;i<iRowCnt+iBgnRow;i++) for(j=iBgnCol;j<iColCnt+iBgnCol;j++) strText=((Excel Range)ews UsedRange Cells[i j]) Text ToString(); if (strText ToUpper() IndexOf(strKeyWord ToUpper())>= ) MessageBox Show( 文档中包含指定的关键字! 搜索结果 MessageBoxButtons OK);    显然这种方法比第一种繁琐得多 不过这里有一个关于遍历单元格的索引很特别的地方 当工作表中的使用区域UsedRange为单行单列的时候 对UsedRange中的单元格遍历起始索引值为 为多行多列的时候 起始索引值为 不知这是Excel程序设计者出于什么样的考虑? cha138/Article/program/net/201311/11986

相关参考

知识大全 用C#在Word文档中搜索文本

用C#在Word文档中搜索文本  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在word应用程序

知识大全 如何在excel中两列查找相同文本

如何在excel中两列查找相同文本?假设数据写在A,B两列则C1单元格写入公式=IF(COUNTIF(A:A,B1),"相同","")下拉填充公式这样在C列中标注为"相同"的B列内容就是在A列中有相同

知识大全 excel 从文本中复制几行数据到excel中,如何让每个字符占据一个单元格

excel从文本中复制几行数据到excel中,如何让每个字符占据一个单元格数据-》分列-》分割符号-》空格QQ:14588376为什么EXCEL中从一个单元格复制一个数据到别一个单元格数据会变化复制之

知识大全 如何在win7旗舰版32位系统中的右键菜单栏新建中添加新建excel文档

如何在win7旗舰版32位系统中的右键菜单栏新建中添加新建excel文档?求解?急!桌面右键新建一个文本文档,将以下文字复制到文档内保存退出后将该新“建文本文档.txt”改为“建文本文档.reg”确定

知识大全 如何将EXCEL文档里所有的工作表都复制到另一个文档中

如何将EXCEL文档里所有的工作表都复制到另一个文档中  以下文字资料是由(本站网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 如何在java中去掉文本文件中的“”

  将word文档转换后有一个方形的全黑的符号只有自己写一个filter才能过滤掉把转换后的文档里面非中文的字符串过滤掉这个黑框即可如何过滤?根据byte值过滤就行了看byte值是否相等  注意一定要

知识大全 excel文档如果有宏病毒或其它宏,用excel 2010打开时会有提示么

excel文档如果有宏病毒或其它宏,用excel2010打开时会有提示么会的,必须的。EXCEL打开EXCEL文档时有外部引用或其它原因提示(更新).如果点了(不更新),编辑过程中还能(更新)吗?这种

知识大全 JSP生成WORD文档,EXCEL文档,PDF文档

JSP生成WORD文档,EXCEL文档,PDF文档  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!l

知识大全 excel里面怎么搜索某个内容 有很多人名,怎么快速找到我要找的名字

excel里面怎么搜索某个内容有很多人名,怎么快速找到我要找的名字按组合键ctrl+f,弹出查找和选择对话框,在查找内容里输入你要查的内容,点击查找全部,就会找出你想要的东西了。怎么在Excel中搜索

知识大全 PHP对文本文件的搜索

PHP对文本文件的搜索  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  &nb