![]() |
#5 |
Участник
|
Цитата:
Сообщение от Владимир Максимов
![]() Кстати, может просто "мусор" остался в буфере обмена после последнего tb.toClipboard()? В смысле, первая команда rows.copy() пытается скрестить "ежа и ужа". Часть буфера от Windows загнанный в tb.toClipboard() и часть буфера от OWC через rows.copy()
Попробуй сначала сделать оба листа и только потом наполнять их данными через tb.toClipboard() + range.paste() Я бы еще поэкспериментировал с копированием без параметра. Т.е. через буфер обмена. X++: // Выделяю образцовую строку bookMark = int2str(_rowTemplate) + ":" + int2str(_rowTemplate); range = sheet.range(bookMark); // Копирую ее содержимое со всеми форматами в буфер обмена range.copy(); // Вставляю из буфера обмена в строку ниже (под выделенной) range.insert(#xlDown);
Если вставлять новые строки по одной то время выгрузки увеличивается в разы. Насчет вставки строк - я вроде так и делаю X++: COM worksheets, sheet, newsheet, range, rows, newRows, cell; TextBuffer tb; Table1 table1; Table2 table2; int curRow, numRows; ; //загрузка шаблона GridExcel.XMLURL("S:\\testSpreadSheet.xml"); worksheets = GridExcel.Worksheets(); //выделем нужную строчку на шаблоне sheet = worksheets.Item(1); range = sheet.Range("A9:F9"); curRow = 9; //подсчитываем кол-во необходимых для вставки строк select count(recid) from table1; numRows = table1.RecId; if( numRows <= 1 ) { return; } //вставляем строки rows = sheet.Rows(); newRows = rows.Item( strfmt("%1:%2", curRow + 1,NumRows + curRow) ); //вставляем после выделенной строки newRows.Insert(); //копируем нужный формат newRows = rows.Item( strfmt("%1:%2", curRow + 1,NumRows + curRow) ); //куда будем копировать форматирование rows = range.EntireRow(); //откуда будем копировать форматирование rows.copy( newRows ); |
|
Теги |
errors, spreadsheet |
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|