Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Как удалить линию (Row) в Excel ?


Автор: tht 29.11.2008, 21:28
мне нада удалить строку целиком.
я делал так:
Код

Range = (Range)Worksheet[1].Cells[2,2];
Range.Delete(XlDeleteShiftDirection.xlShiftUp);

в результате удаляется только ячейка по координатам "2B". 

если делаю так:
Код

Range = (Range)Worksheet[1].Rows[2,2]; // тут ошибка возникает.
Range.Delete(XlDeleteShiftDirection.xlShiftUp);

то по первой строчке, где Rows,  идет ошибка.

в общем, мне просто надо удалить строку, точнее линию, со всеми входящими в нее ячейками.
можно конечно придумать цикл который будет все ячейки в линии удалять, но это как-то не правильно.
надо чтоб линия целиком удалялась.

заранее спасибо.

Автор: Bishop 30.11.2008, 00:29
tht, 
Цитата
Range = (Range)Worksheet[1].Rows[2,2]; // тут ошибка возникает.

Дык:
Код
Range = (Range)Worksheet[1].Rows[2];

Автор: tht 30.11.2008, 10:32
тогда вылетает такая ошибка
Error    1    No overload for method 'this' takes '1' arguments
понимаешь там в Rows тоже два параметра как и в Cells[X,X];

Автор: Bishop 30.11.2008, 21:21
tht, действительно. Я просто проверял в PowerShell:
Код
$excel = New-Object -comObject Excel.Application
$excel.Workbooks.PSBase.GetType().InvokeMember("Add", "InvokeMethod", $null, $excel.Workbooks, @(), $null)
$excel.visible = $true
# Тут ввожу несколько строк
$ws =  $excel.Workbooks.Item(1).Worksheets.Item(1)
$row = $ws.Rows.Item(2)
$row.PSBase.GetType().InvokeMember("Delete", "InvokeMethod", $nul, $row, $null, $null)


Можно так:
Код
Range rng = ((excel.Workbooks[1].Worksheets[1] as Worksheet).Cells[2, 2] as Range).EntireRow;
rng.Delete(XlDeleteShiftDirection.xlShiftUp);

Автор: tht 1.12.2008, 16:16
что-то не получается...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)