找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博登陆

只需一步, 快速开始

查看: 241|回复: 9

[翻译文档] C#实此刻 Excel文档中搜刮 文本

[复制链接]

该用户从未签到

4

主题

42

帖子

24

积分

LV.1

Rank: 1

积分
24
QQ
发表于 2016-5-31 13:33:39 | 显示全部楼层 |阅读模式
有了在Word文档中编程实现搜刮文本的经验,在Excel中实现这个功效也并驳诘事。

   打开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文档:

  1. object filename="";

  2. object MissingValue=Type.Missing;

  3. string strKeyWord=""; //指定要搜刮
    的文本,假如
    有多个,则声明string[]

  4. Excel.Application ep=new Excel.ApplicationClass();

  5. Excel.Workbook ew=ep.Workbooks.Open(filename.ToString(),MissingValue,

  6. MissingValue,MissingValue,MissingValue,

  7. MissingValue,MissingValue,MissingValue,

  8. MissingValue,MissingValue,MissingValue,

  9. MissingValue,MissingValue,MissingValue,

  10. MissingValue);复制代码然后预备
    遍历Excel工作表:

  11. Excel.Worksheet ews;

  12. int iEWSCnt=ew.Worksheets.Count;

  13. int i=0,j=0;

  14. Excel.Range oRange;

  15. object oText=strKeyWord.Trim().ToUpper();



  16. for(i=1;i<=iEWSCnt;i++)

  17. {

  18. ews=null;

  19. ews=(Excel.Worksheet)ew.Worksheets[i];

  20. oRange=null;

  21. (Excel.Range)oRange=((Excel.Range)ews.UsedRange).Find(

  22. oText,MissingValue,MissingValue,

  23. MissingValue,MissingValue,Excel.XlSeARchDirection.xlNext,

  24. MissingValue,MissingValue,MissingValue);

  25. if (oRange!=null && oRange.Cells.Rows.Count>=1 && oRange.Cells.Columns.Count>=1)

  26. {

  27. MessageBox.Show("文档中包括
    指定的要害
    字!","搜刮
    成果
    ",MessageBoxButtons.OK);

  28. break;

  29. }

  30. }

  31. 复制代码   这里要说两个值得留意
    的处所
    。一个是遍历工作表的索引,不是从0开端
    ,而是从1开端
    ;别的
    一个是Find方式
    的第六个参数SearchDirection,指定搜刮
    的标的目的
    ,辅助
    文档中说这个参数是可选项,可是
    我用MissingValue如论若何
    编译不克不及
    经由过程
    ,不知什么原因,于是显式指定它的默认值xlNext。

  32.    第一种方式
    实现了,再看看第二种方式
    。这种方式
    除了要遍历工作表,还要对工作表应用
    区域的行和列进行遍历。其它一样,只对遍历阐明
    ,代码如下:

  33. bool blFlag=false;

  34. int iRowCnt=0,iColCnt=0,iBgnRow,iBgnCol;



  35. for(m=1;m<=iEWSCnt;m++)

  36. {

  37. ews=(Excel.Worksheet)ew.Worksheets[m];

  38. iRowCnt=0+ews.UsedRange.Cells.Rows.Count;

  39. iColCnt=0+ews.UsedRange.Cells.Columns.Count;

  40. iBgnRow=(ews.UsedRange.Cells.Row>1)?

  41. ews.UsedRange.Cells.Row-1:ews.UsedRange.Cells.Row;

  42. iBgnCol=(ews.UsedRange.Cells.Column>1)?

  43. ews.UsedRange.Cells.Column-1:ews.UsedRange.Cells.Column;



  44. for(i=iBgnRow;i<iRowCnt+iBgnRow;i++)

  45. {

  46. for(j=iBgnCol;j<iColCnt+iBgnCol;j++)

  47. {

  48. strText=((Excel.Range)ews.UsedRange.Cells[i,j]).Text.ToString();

  49. if (strText.ToUpper().IndexOf(strKeyWord.ToUpper())>=0)

  50. {

  51. MessageBox.Show("文档中包括
    指定的要害
    字!","搜刮
    成果
    ",MessageBoxButtons.OK);

  52. }

  53. }

  54. }

  55. }复制代码
复制代码
   显然这种方式比第一种繁琐得多,不外这里有一个关于遍历单位格的索引很特殊的处所,当工作表中的应用区域UsedRange为单行单列的时辰,对UsedRange中的单位格遍历肇端索引值为1,为多行多列的时辰,肇端索引值为0,不知这是Excel法式设计者出于什么样的斟酌?

该用户从未签到

2

主题

16

帖子

18

积分

LV.1

Rank: 1

积分
18
发表于 2017-1-16 01:07:26 | 显示全部楼层
增强现实希望发展越来越好

该用户从未签到

0

主题

9

帖子

0

积分

LV.1

Rank: 1

积分
0
QQ
发表于 2017-1-16 14:16:06 | 显示全部楼层
嗯,很不错的样子!!

该用户从未签到

2

主题

15

帖子

19

积分

LV.1

Rank: 1

积分
19
QQ
发表于 2017-1-16 17:34:11 | 显示全部楼层
看帖怎么能不会呢??

该用户从未签到

0

主题

12

帖子

0

积分

LV.1

Rank: 1

积分
0
QQ
发表于 2017-1-17 17:24:34 | 显示全部楼层
想了解下AR增强现实的相关内容来看看

该用户从未签到

1

主题

6

帖子

8

积分

LV.1

Rank: 1

积分
8
QQ
发表于 2017-1-19 23:35:42 | 显示全部楼层
楼主辛苦了。。回帖是一种美德

该用户从未签到

5

主题

19

帖子

28

积分

LV.1

Rank: 1

积分
28
QQ
发表于 2017-1-21 10:59:36 | 显示全部楼层
楼主辛苦了,帮楼主顶起来

该用户从未签到

1

主题

44

帖子

42

积分

LV.1

Rank: 1

积分
42
QQ
发表于 2017-1-23 12:39:18 | 显示全部楼层
增强现实,增强现实,增强现实。重要的事情说三遍

该用户从未签到

3

主题

20

帖子

26

积分

LV.1

Rank: 1

积分
26
QQ
发表于 2017-3-9 10:31:15 | 显示全部楼层
楼主写的很不错,关于AR的知识受教了

该用户从未签到

4

主题

17

帖子

23

积分

LV.1

Rank: 1

积分
23
QQ
发表于 2018-4-18 23:35:27 | 显示全部楼层
竟然还有零回复,给我消失
您需要登录后才可以回帖 登录 | 立即注册 新浪微博登陆

本版积分规则

关闭

站长推荐上一条 /1 下一条

快速回复 返回顶部 返回列表