Цитата:
Сообщение от
Gustav
И как боретесь? В коде что-то отрабатывает или вручную? На картинке-то у вас вроде нормальный вид объединенных ячеек...
Всё очень просто: у нас таблица начинается в строк 19, следовательно встаем на эту строку, копируем её ADORecordSet.RecordCount() -1 раз и вставляем данные. Т.е.:
X++:
. . .
wkss = comDocument.Worksheets();
wks = wkss.Item(cvActiveWks);
rng = wks.Range(_bookmark); // _bookmark = "19:19"
this.insertRows(rng.row(), rng.row() + 1, rstAxa.RecordCount() - 1);
cell = rng.Offset(0,0);
cell.CopyFromRecordset(rstAxa);
. . .
X++:
protected void insertRows(int _fromRow,
int _toRow,
int _numOfCopies)
{
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, _fromRow));
comRow.copy();
comRowTarget = this.findRange(strFmt("%1:%2", _toRow, _toRow + _numOfCopies - 1));
comRowTarget.select();
comRowTarget.insert(/*#xlShiftDown*/);
comWorkSheet = this.getWorkSheet(cvActiveWks);
comRows = comWorkSheet.cells();
comRows = COM::createFromVariant(comRows.item(1));
comRows.select();
comExcelApplication.cutCopyMode(false);
}
При этом сохраняется объединение ячеек. Но вот проблема с форматированием остаётся.