C#编程实现在Excel文档中搜索文本

C#编程实现在Excel文档中搜索文本,第1张

C#编程实现在Excel文档中搜索文本,第2张

有了编程在Word文档中搜索文本的经验,在Excel中实现这个功能并不难。

打开Excel的VBA帮助,查看Excel的对象模型。很容易找到完成这个功能所需的几个集合和对象:应用程序、工作簿、工作簿、工作表、工作表和范围。Application创建Excel应用程序,workbooks打开Excel文档,Workbook获取Excel文档Workbook,Worksheets操作工作表集合,Worksheets获取单个工作表。

搜索思想对应于上述集合和对象。可以表述为:要搜索的文本可能存在于Excel文档中的一张工作表上,搜索要遍历目标Excel文档中每张工作表的有效区域。如果找到了,就退出这次搜索;如果没有,它将继续搜索,直到搜索完成。

与Word对象模型不同,Excel对象模型不提供Find对象,但这无关紧要。可以通过两种方法实现,一种是通过Range对象的Find()方法,另一种比较麻烦。获取工作表的有效范围后,遍历Range对象中的所有行和列。在实践中,当使用第二种方法时发现了一个特殊的现象,因此第二种方法也将被详细描述。

第一步,打开Excel文档:

Excel。工作表ews
int iEWSCnt=ew。工作表。计数;
int i=0,j = 0;
Excel。橙色范围;
object oText=strKeyWord。修剪()。ToUpper();

for(I = 1;I = 1 & & orange . cells . columns . count > = 1)
{
messagebox . show("文档包含指定的关键字!",“搜索结果”,MessageBoxButtons。OK);
break;
}
}
这里有两点值得注意。一种是遍历工作表的索引,从1开始而不是0;另一个是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

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » C#编程实现在Excel文档中搜索文本

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情