在C#程序的Excel工作表中找到确切的字符串

时间:2018-08-17 11:39:41

标签: c# excel

我正在使用c#程序在Excel工作表中搜索文本。我有一个名为“ MASTER”的Excel工作表,并且在该工作表中,B列中有很多文本。我想寻找  B列中的文本“苹果”。这是我的代码:

Excel.Worksheet workSheet;
workSheet = (Excel.Worksheet)xlWorkBook.Worksheets["MASTER"];
string result;
string utterance = "apples";

range1 = workSheet.Columns["B:B"] as Excel.Range;
Excel.Range findRange 
findRange = range1.Find(utterance);
result = (string) (range2.Cells[findRange1.Row, 2] as Excel.Range).Value2;

它可以在B列中搜索输入语音“苹果”。但是,在那一栏中,有很多苹果。 “ applepie”,“ applejam”,“ apple”等,上述代码的结果为“ applepie”。我认为是因为它只是发现文本包含“ apple”。我的问题是如何使它找到确切的字符串,以便输出将是B列中的“ apple”?

2 个答案:

答案 0 :(得分:1)

Range.Find还有许多其他参数(请参见documentation),尤其是LookAt,请参见下面的演示:

var app = new Excel.Application();
var workbook = app.Workbooks.Open("C:\\Path\\File.xlsx");
var sheet = workbook.Worksheets["MASTER"];
var range = (Excel.Range)sheet.Columns["B:B"];
var result = range.Find("apples", LookAt: Excel.XlLookAt.xlWhole);
var address = result.Address;//cell address
var value = result.Value2;//cell value
//close or do something else

答案 1 :(得分:0)

您可以使用方法Split将每个单词视为数组元素

range1 = workSheet.Columns["B:B"] as Excel.Range;
var words = range1.Split(' ');
foreach(var word in words)
{
    if (word == utterance)
        Console.WriteLine(word);
}