我怎样才能从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(); }