Как я могу получить Адрес ячейки от Excel, учитывая номер строки и номер столбца, например,
строка 2 и седло 3 должна возвратить C2... Помогите
Я не большой пользователь VSTO C # - обычно я выбираю VBA. Однако следующая пара функций может быть вам полезна. Не уверен, что их можно еще упростить:
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
. Чтобы получить адрес, нужен лист. Однако вы можете поменять местами ActiveSheet (Excel.Worksheet)
, если вы не хотите предоставлять лист (это может работать или не работать, в зависимости от того, что вы открыли в сеансе VSTO).
public string GetCellAddress(int row, int col) {
return (char)((int)'A' + (row - 1)) + col.ToString();
}
Этот (непроверенный) также должен работать с адресами столбцов, превышающими 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();
}
Исправлено: адрес столбца был обратным
{{ 1}}