06.05.2010, 14:54
|
#10
|
Участник
Регистрация: 04.05.2010
Адрес: Мир, Россия, Московская область
|
Цитата:
Сообщение от Gustav
Роман, у меня два вопроса: - Рекордсет создаете с учетом всех колонок, попадающих в область бланка? Т.е. у вас должно быть много фиктивных и немного содержательных - т.е. получается 16 содержательных где-то из 85 всего.
- Как вставляете новые строки? Сразу всё необходимое кол-во перед исходной 19-й строкой? Потом дополнительно еще формат этой исходной распространяете на добавленные?
- Рекордсет имеет поля под все столбцы, т.е. 16 значемых и 69 "резервных"
- Строки добавляются скопом с помощью следующей функции:
X++: protected void insertRows(int _fromRow,
int _toRow,
int _fromWorkSheet = 1,
int _offset = 1,
int _numOfCopies = 1,
int _toWorkSheet = 1)
{
COM comRows,
comWorkSheet,
comRow, comRowTarget, selection;
COMVariant comRowVariant, selVariant;
;
if (! _numOfCopies)
return;
if (! comDocument)
throw error(strFmt("@DIS6401", "Excel.Application"));
comRow = this.findRange(strFmt("%1:%2", _fromRow, _toRow));
comRow.copy();
comRowTarget = this.findRange(strFmt("%1:%2", _toRow+ _offset, _toRow+ _offset + _numOfCopies - 1));
comRowTarget.select();
comRowTarget.insert();
comWorkSheet = this.getWorkSheet(_toWorkSheet);
comRows = comWorkSheet.cells();
comRows = COM::createFromVariant(comRows.item(1));
comRows.select();
comExcelApplication.cutCopyMode(false);
}
При копировании строк нарушается формат ячеек. Самое интересное, он нарушается только при копировании с помощью COM, так как написав тоже самое в VBA всё отлично
Последний раз редактировалось Roman N. Krivov; 06.05.2010 в 15:34.
|
|