|
![]() |
#1 |
Участник
|
Что-то вроде этого:
X++: #define.xlPasteFormats(-4122) private void copyLineFormat(SysExcelWorksheet _workSheet, int _fromRow, int _toRow) { Com rangeFrom, rangeTo; str strRangeFrom, strRangeTo; strRangeFrom = ComExcelDocument_RU::numToNameCell(#colItemId, _fromRow) + ":" + ComExcelDocument_RU::numToNameCell(endCol, _fromRow); strRangeTo = ComExcelDocument_RU::numToNameCell(#colItemId, _toRow) + ":" + ComExcelDocument_RU::numToNameCell(endCol, _toRow); rangeFrom = _workSheet.cells().range(strRangeFrom).comObject(); rangeTo = _workSheet.cells().range(strRangeTo).comObject(); rangeFrom.Copy(); rangeTo.PasteSpecial(#xlPasteFormats); rangeFrom.finalize(); rangeTo.finalize(); } 1) Механизм тормозной; 2) В момент формирования отчета пользователь не может использовать накаким образом буфер обмена для других задач |
|
![]() |
#2 |
Moderator
|
Михаил Петрович, не очень понимаю, зачем нужен лист2, если на лист1 уже присутствует сформатированная область.
Выведите в нее данные для вкладыша 1. Ниже нее друг за другом выведите в неформатированном виде данные вкладышей 2...N. Далее скопируйте формат области 1 на диапазон областей 2...N. Т.е. в самом конце процесса будет нужна будет всего одна (!) операция копирования формата "маленькой" области на "большую" (кратную "маленькой" N-1 раз). Как выполнить операцию копирования - уже рассказал Raven Melancholic. P.S. ВАЖНО: при копировании следует выделять не просто область 1, а полные строки, проходящие через область 1. Соответственно вставку следует производить в полные строки, проходящие через области 2...N. В этом случае высоты строк вкладыша корректно воспроизведутся и на нижних областях. В противном случае - распространятся только шрифты, заливки, рамки и т.п. |
|