按名称访问Excel单元格而不是像A1那样的"坐标"

Ale*_*der 5 c# excel-2007

我有一个Excel表格,我已经从我的代码中命名了我必须填写的单元格.命名字段的原因是客户可以重新排列单元格.

为了使它更清楚:我使用下面显示的字段命名单元格.

Excel字段名称

我现在的问题是我不知道如何使用office interop从C#中解决这些字段.

Range r = Sheet.get_Range("M_Leitung", Type.Missing);
Run Code Online (Sandbox Code Playgroud)

不起作用.由于我没有定义任何范围,只需要插入值的单个单元格,我需要一个返回指定单元格的函数.

Mav*_*rik 6

我只是模拟你的场景,下面的代码就像一个魅力(我在sheet2中将A1标记为M_Leitung):

编辑:更新的代码 - 当您有多个工作表时,您需要引用工作簿范围中的名称,这将返回完全限定的地址(因此结果范围知道从哪个工作表中选择地址)

private static void Main(string[] args)
{
    string FileName = Path.Combine(Path.GetDirectoryName(System.Windows.Forms.Application.ExecutablePath), "Book2.xlsx");

    Application excelApp = new Application();
    Workbooks excelWorkbooks = excelApp.Workbooks;
    Workbook report = excelWorkbooks.Open(FileName, 0, false, 5, "", "", true, XlPlatform.xlWindows, "", true, false, 0, false, false, false);

    var y = report.Names.Item("M_Leitung").RefersToRange.Value;

    Console.WriteLine(y);
    excelWorkbooks.Close();
    excelApp.Quit();
}
Run Code Online (Sandbox Code Playgroud)

请注意,重命名单元格时会自动创建命名范围.如果您创建了一系列说A1:B1并且您选择了它.Excel将向您显示该角标签中的命名范围,而不是证明它可以双向工作的地址.

HTH