如何使用C#在Excel中查找和替换单词/短语

时间:2017-01-30 16:52:18

标签: c# excel vba excel-vba

我目前正在为员工创建一个程序,以便根据用户输入等信息自动填充并打印出检查表。检查表创建为excel文档,我想在文档中搜索特定单词或短语并用用户生成的变量输入替换它。

示例:用户输入房间号RM:XXX,程序将在文档中搜索短语{Room Number}并将其替换为RM:XXX。我找到了一些无法与Visual Basic 2017一起使用的解决方案。

我提出的最接近的解决方案是:

 Microsoft.Office.Interop.Excel.Application replaceWord = new Microsoft.Office.Interop.Excel.Application();

 Microsoft.Office.Interop.Excel.Workbook wb = default(Microsoft.Office.Interop.Excel.Workbook);

 wb = replaceWord.Workbooks.Open("C:\\test.xlsx");

 wb.Worksheets("Sheet1").Cells.Replace(What: "{Room Number}", Replacement: "RM:XXX", LookAt: XlLookAt.xlWhole, SearchOrder: XlSearchOrder.xlByRows, MatchCase: false, SearchFormat: true, ReplaceFormat: false);

问题出现在最后一行wb.Worksheets出现错误:{“非可调用成员WorkBook.Worksheets不能像成员一样使用。”}

有人能指出我正确的方向,我可以找到wb.Worksheets无法正常工作或抛出错误的原因吗?

1 个答案:

答案 0 :(得分:2)

Worksheets是属性,不是方法。这就是错误消息试图告诉你的内容。

该属性为您提供实现Sheetsindexer实例,在C#中使用[]访问这些实例。你的最后一行应该是这样的:

wb.Worksheets["Sheet1"]
  .Cells
  .Replace(What: "{Room Number}", 
           Replacement: "RM:XXX", 
           LookAt: XlLookAt.xlWhole, 
           SearchOrder: XlSearchOrder.xlByRows, 
           MatchCase: false,  
           SearchFormat: true, 
           ReplaceFormat: false);

注意Worksheets["Sheet1"]处的方括号。这些都有所不同。