2016-10-28 4 views
0

Можно ли удалить и вставить несколько строк в таблицу? Предположим, я хотел удалить ряд строк, например, 210-560, 10-11 и т. Д. Возможно ли это сделать в одной строке, как в приведенном ниже примере, или мне нужно создать цикл с диапазоном номеров для удаления диапазона?Удаление и вставка нескольких строк из таблицы Excel.Interop

C#

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.Delete(); 

xlWorkBook.Worksheets["Sheet1"].ListObjects["Table1"].ListRows(11,12).Range.InsertRowRange(); 

При использовании VBA один может использовать простой метод, как это:

Rows("210:560").Delete 
Rows("11:12").EntireRow.Insert 

ответ

1

Если вы хотите сделать то же самое, как код VBA в C# вы можете просто написать :

var ws = xlWorkBook.Worksheets["Sheet1"]; 
ws.Range["210:560"].Delete(); 
ws.Range["11:12"].Insert(); 

Вы даже можете указать несколько строк сразу:

ws.Range["210:560,722:838,917:917"].Delete(); 
ws.Range["11:12,15:17,19:19"].Insert(); 

Для отдельных строк необходимо указать номер строки дважды, как показано выше.

Предел размера строки строк составляет 255 символов. Если вы хотите обрабатывать больше строк, чем это за один раз, вам нужно объединить диапазоны. Так, например, что-то вроде этого:

application.Union(ws.Range["2:5,7:8,9:9"], ws.Range["11:12,15:17,19:19"]).Delete(); 

(.. Просто ради краткости я не показал какие-либо большие строки в этом примере application является экземпляром текущего Excel.Application)

Единственным чтобы знать: вы должны использовать разделитель списков, указанный в региональных настройках Windows на панели управления. Это особенно важно, если вы доставляете свое приложение глобально или неизвестным пользователям (например, ISV). Например. для немецких пользователей разделителем списка по умолчанию будет ;, а не ,, как для английских пользователей. Но, конечно, пользователь может настраивать почти все, что угодно вручную.

Вы можете получить текущий список разделитель из региональных настроек Windows, с помощью этого:

var sep = (string)application.International[XlApplicationInternational.xlListSeparator]; 

 Смежные вопросы

  • Нет связанных вопросов^_^