c# - 按名称而不是像 A1 那样的 "coordinates"访问 Excel 单元格

标签 c# excel-2007

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

为了更清楚一点:我使用下面显示的字段来命名单元格。

Excel Field Name

我现在的问题是,我不知道如何使用 office interop 从 C# 中处理这些字段。

Range r = Sheet.get_Range("M_Leitung", Type.Missing);

没用。由于我没有定义任何范围,只有我必须在其中插入值的单个单元格,所以我需要一个返回指定单元格的函数。

最佳答案

我只是模拟了您的场景,下面的代码非常有效(我将 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();
}

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

HTH

关于c# - 按名称而不是像 A1 那样的 "coordinates"访问 Excel 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6993660/

相关文章:

c# - 使用 Excel 加载项

c# - GUI 线程中的异常导致 vshost.exe 崩溃

c# - Entity Framework 核心 ObjectContext.Refresh 等效项

excel - 表格公式在 Excel VBA 2007 中不起作用,而在 2013 中起作用

excel - 为什么 Excel 数据透视表中的总计为 #DIV/0! (除以零)在此计算字段上?

vba - 如何格式化从特定行到下的 Excel 列

vba - 使用 Excel VBA 读取网页

c# - 有没有更好的方法将 dbcontext 添加到 Asp.core MVC Controller ?

c# - .NET 核心 : attributes that execute before and after method

c# - 是否可以在 C# 中返回对变量的引用?