c # Excel Interop - границы теряются на нескольких Range.Insert () s - PullRequest
1 голос
/ 03 апреля 2012

Когда я вызываю Range.Copy () для столбца, а затем вызываю Range.Insert () перед другим столбцом, он работает отлично;исходный столбец дублируется туда, где я хочу.Однако, если я сделаю еще один вызов Range.Insert () без повторного вызова Range.Copy (), он вставит новый столбец в нужное мне место, но без каких-либо границ.

Я обнаружу, что если я это сделаюкаждый раз вызывайте Range.Copy (), вывод - именно то, что я хочу, но это занимает в 5 раз больше времени.Мне действительно нужно это сделать?

Вот мой код для справки:

Range sheetCols = sheet.Columns;

...

int col = routesStartCol;
foreach (RouteObject route in loc.Routes)
{
    Range thisCol = sheetCols[col]; com.Got(thisCol);
    if (col == routesStartCol)
        thisCol.Copy();
    else
        thisCol.Insert(XlInsertShiftDirection.xlShiftToRight);
    sheetCells[routeNameRow, col] = route.Name;
    col++;
}

Ответы [ 2 ]

1 голос
/ 10 июля 2012
oRng1 = oSheet.get_Range("A1", "D1");
oRng2 = oSheet.get_Range("A2", "D2");
oRng1.Copy(oRng2); //copy r1 to r2
//to insert above r2
oRng2.Insert(Excel.XlInsertShiftDirection.xlShiftDown,Excel.XlInsertFormatOrigin.xlFormatFromLeftOrAbove);
0 голосов
/ 02 августа 2012

Похоже, мне действительно нужно копировать каждый раз.Что вы действительно делаете, когда не копируете, просто вставляете пустой столбец, который по умолчанию копирует часть форматирования столбца слева.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...