Excell копирование строк

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Excell копирование строк

Сообщение n0where »

Доброе время суток. возник вопрос:
Как копировать и вставить строки в Excel с сохранением форматирования?

Использую сейчас это

Код: Выделить всё

      xlCopyToBuff(My_Col-1,1,My_Col-1,161);
      xlInsertRange(xlShiftDown,My_Col,1,My_Col,161);
      xlPasteAllFromBuff(My_Col,1,My_Col,161);
Но долго работает.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Starry
Посетитель
Сообщения: 33
Зарегистрирован: 20 июл 2012, 15:13

Re: Excell копирование строк

Сообщение Starry »

А зачем вам здесь xlInsertRange? У вас в тех ячейках, которые вы собираетесь заполнить, есть информация? Если нет, это лишняя функция, возможно она и дает тут максимальную задержку.
Для ускорения вывода в Excel лучше пользоваться матрицей (xlWriteMatrixToExcel), а потом на это место растиражировать нужное вам форматирование ячеек (xlPasteFormatFromBuff)
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Excell копирование строк

Сообщение n0where »

вставлять строки нудно не в конец файла в нужную позицию. Если просто безx lInsertRange - он заменит данные, которые идут ниже

xlWriteMatrixToExcel - заполняет данные. форматировать поля вручную чтоле?
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Starry
Посетитель
Сообщения: 33
Зарегистрирован: 20 июл 2012, 15:13

Re: Excell копирование строк

Сообщение Starry »

Тогда можно сдвинуть вниз имеющиеся данные с помощью xlReadMatrixFromExcel и с отступом вниз xlWriteMatrixToExcel.
Форматирование задать для одной ячейки или диапазона и растиражировать с помощью xlPasteFormatFromBuffer.
Или: отформатировать заранее вручную в шаблоне Excel-файла.
Или: форматировать ячейки по одной или диапазонами прямо в vip-е по мере их заполнения данными.

В общем, если отвечать на ваш вопрос в первом посте - то другого варианта копирования строк с сохранением формата нет.
Все что я предложил, это изменения порядка вывода в Excel :)
Ответить