Excel C#:如何从Range对象获取工作表/工作簿名称和地址?

The*_*ear 2 c# excel

我有一个Excel.Application.SheetChange事件,我注册到哪个传递更改的范围对象.

我试图从尽可能少的互操作调用中提取工作表名称,工作簿名称和地址.

有没有人有什么好主意?例如,如何获取范围的完整地址,然后进行一些字符串解析才能得到它?

这是代码snippit:

    private void ws_change(Excel.Range target){
        //Code to get target workbook name, worksheet name, and range address
   }
Run Code Online (Sandbox Code Playgroud)

非常感谢.

Cha*_*ger 5

你应该看看各种属性:

var sheet = range.Worksheet;
var sheetName = sheet.Name;

var workbook = (Workbook)sheet.Parent;
var workbookName = workbook.Name;
Run Code Online (Sandbox Code Playgroud)

如果您真的想要沿着解析路线前进,那么您可以通过External = trueAddress索引器中指定来获取范围的完全限定地址:

var address = range.Address[true, true, XlReferenceStyle.xlA1, true, null];
// returns e.g. [Book1]Sheet1!A1
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅地址文档.