我怎样才能从Excel中获取单元格地址?

例如,如何从Excel中获取单元格地址给定的行号和列号

第2行和第3列应该返回C2 …请帮助

我不是VSTO C#的大用户 – 我通常selectVBA。 但是,下面这对函数可能对您有用。 不确定是否可以精简一些:

public string RangeAddress(Excel.Range rng) { return rng.get_AddressLocal(false, false, Excel.XlReferenceStyle.xlA1, missing, missing); } public string CellAddress(Excel.Worksheet sht, int row, int col) { return RangeAddress(sht.Cells[row, col]); } 

RangeAddress将采取任何Excel范围,并把你的地址。 如果你想要绝对样式(带有美元符号,例如$ C $ 3),那么你必须将get_AddressLocal调用的前两个参数更改为true,true。

要从行/列对获取单元格地址,可以使用CellAddress 。 它确实需要一张表来获取地址。 但是,如果您不想提供工作表(可能会也可能不工作,具体取决于您在VSTO会话中打开的(Excel.Worksheet)ActiveSheet ,您可以交换(Excel.Worksheet)ActiveSheet

只是一个进步,上校 – 是在错误的地方

 static string GetCellAddress(int row, int col) { StringBuilder sb = new StringBuilder(); do { col--; sb.Insert(0, (char)('A' + (col % 26))); col /= 26; } while (col > 0); sb.Append(row); return sb.ToString(); } 

这一个(未经testing)也应该在超过26的列地址上工作:

 using System.Text; public string GetCellAddress(int row, int col) { StringBuilder sb = new StringBuilder(); col--; do { sb.Insert(0, (char)('A' + (col % 26))); col /= 26; } while (col > 0); sb.Append(row); return sb.ToString(); } 

更正:列地址向后

你能以某种方式调用Excel的本地公式或function重复其function? 这将是公正的

 =CELL("address") 

单元格(2,3)。地址

我正在使用从零开始的行和列索引。 所以我不得不将以前答案的代码改写成以下内容。 对于所有可能的地址iE A1,Z2,AA2,ZZ10,…

  public string GetAddress(int col, int row) { col++; StringBuilder sb = new StringBuilder(); do { col--; sb.Insert(0, (char)('A' + (col % 26))); col /= 26; } while (col > 0); sb.Append(row + 1); return sb.ToString(); } 
 public string GetCellAddress(int row, int col) { return (char)((int)'A' + (row - 1)) + col.ToString(); }