我有一个 Excel 工作表,我在其中命名了我必须从我的代码中填写的单元格。 命名字段的原因是客户可以重新排列单元格。
为了更清楚一点:我使用下面显示的字段来命名单元格。
我现在的问题是,我不知道如何使用 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/