|
|
#6 |
|
Участник
|
У Вас много лишних "телодвижений"
Если очистить код от лишних действий, то должно быть примерно такX++: COM worksheets,
sheet,
rowTemplate,
newRows;
int curSheet;
int curRow,
numRows;
worksheets = GridExcel.Worksheets();
// Сразу создаем нужное количество листов по образцу первого листа
sheet = worksheets.Item(1);
sheet.copy( sheet );
for (curSheet = 1; curSheet <= 2; curSheet++)
{
//выделем нужную строчку на шаблоне
sheet = worksheets.Item(curSheet);
curRow = 9;
//подсчитываем кол-во необходимых для вставки строк
select count(recid) from table1;
numRows = table1.RecId;
if (!numRows)
{
warning('Нет данных для вставки на листе ' + int2str(curSheet));
continue;
}
//вставляем строки
newRows = sheet.Range(strfmt("%1:%2", curRow + 1,NumRows + curRow) ); //вставляем после выделенной строки
newRows.Insert();
//копируем нужный формат
rowTemplate = sheet.Range(strfmt("%1:%2", curRow, curRow) ); //откуда будем копировать форматирование
rowTemplate.copy( newRows );
} // for (curSheet = 1; curSheet <= 2; curSheet++)PS: Для справки OWC SpreadSheet имеет предел в 32766 операций. Не важно каких. Например, не в состоянии вставить большее количество строк. У Вас какое значение numRows получается для второго листа?
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... Последний раз редактировалось Владимир Максимов; 25.05.2014 в 18:38. |
|
|
| Теги |
| errors, spreadsheet |
|
|
|