Excel Interop: ссылка по номеру, а не по строке - PullRequest
2 голосов
/ 23 мая 2011

Доброе утро.

Прочитав ответ на вопрос об оптимизации Excel Interop , я обнаружил, что ссылаться на ячейку с помощью worksheet.Range["A1:C3"] (так же, как worksheet.get_range("A1:C3")) не очень удобно. Я бы хотел как-то ссылаться на ячейку, используя целые / длинные числа, и не хотел бы отображать номера столбцов {1, 2, 3, ...} на буквы столбцов {"A", "B", "C ", ...}.

Примечание: я знаю о .Cells, но это не вариант, так как он возвращает только отдельные ячейки AFAIK.

Есть идеи?

привет

Ответы [ 2 ]

3 голосов
/ 23 мая 2011

В макросе Excel (VBA) вы можете использовать этот способ:

Dim rngStart As Range
Set rngStart = Range("A1")

Dim rngEnd As Range
Set rngEnd = rngStart.Rows(3).Columns(4)

Dim rngFinal As Range
Set rngFinal = Range(rngStart, rngEnd)

rngFinal.Select

Должно быть легко переписать его на C # / VB.NET.

2 голосов
/ 23 мая 2011

Вы можете использовать свойство Cells для создания объекта Range, который можно использовать в качестве аргумента свойства Range.

Посмотрите пример здесь: http://msdn.microsoft.com/en-us/library/bb178282.aspx В середине страницы у вас есть пример, где вы используете свойство Cells, чтобы получить два объекта диапазона, которые вы передаете свойству Range вместо передачи строк:

With Worksheets(1)
    .Range(.Cells(1, 1), _
        .Cells(10, 10)).Borders.LineStyle = xlThick
End With

Как правило, свойство Cells возвращает объект Range, с которым вы можете делать все, что захотите: http://msdn.microsoft.com/en-us/library/bb148836.aspx

...