|
![]() |
#1 |
Программатор
|
Еще вопросик, не знаю сюда его задать или нет.
Объединение ячеек. В OXMLWorksheet_RU есть метод saveMergeCells. там нужен контейнер, в котором [fromrow, toRow, fromCol, ToCol].но есть еще переменная MergeCells, которую никак не пойму как проинитить. Там же метод initMergeCells() а в нем if (!mergeCells) { return; } ???? это что такое ?)) |
|
![]() |
#2 |
Участник
|
Тип mergeCells - DocumentFormat.OpenXML.Spreadsheet.MergeCells - это смерженные ячейки шаблона.
if (!mergeCells) { return; } Означает что если нет в воркшите объединённых ячеек то в аксаптовый мап с этими ячейками вычитывать нечего |
|
|
За это сообщение автора поблагодарили: Sada (2). |
![]() |
#3 |
Программатор
|
Цитата:
![]() Последний раз редактировалось Sada; 05.08.2013 в 16:03. |
|
![]() |
#4 |
Участник
|
У вас templateMode = true?
Я особо не вижу смысла в объединении ячеек, можно всё это нарисовать в шаблоне - одну объединённую вторую разединенную, и вызывать какую надо в зависимости от ситуации. Но если очень хочется - надо добавить в DocumentFormat.openXml.Spreadsheet.Worksheet узел MergeCells(строго на нужном месте а то будет ошибка). Для этого можно воспользоваться методами InsertBefore или InsertAfter, для чего можно использовать: OXML_RU::invokeGeneric(row, 'InsertBefore', cell.GetType(), parameters); Дело в том что эти функции generic и из аксапты по нормальному не вызываются. Если mergeCells узел уже есть его добавлять не надо ![]() ну а дальше положить просто данные в аксаптовый мап mergeCellsSet аналогично тому как это делается в initMergeCells. в нем хранятся координаты левого верхнего и правого нижнего углов. |
|
![]() |
#5 |
Участник
|
Касательно колонок - не совсем понял. Именованных колонок или ячеек?
Идея в том что отчёт состоит из секций которые задаются посредством выделения и задания именованных ренжей СТРОКам, например с 1 по 10 шапка отчёта, потом с 11 по 15 шапка страницы, потом 16 строки и так далее. В рамках каждой секции задаются с помощью именованных диапазонов поля(а не колонки)(ItemName, Amount и так далее). Пример - шаблон ТОРГ-12 который можно выгрузить из ресурса TORG_12. Когда шаблон открывается(при установленной переменной templateMode = true), из него вычитываются все строки в память, содержимое удаляется. Дальше когда вызывается execute на некую секцию всё содержимое секции скидывается обратно в файл. например Execute("REPORTHEADER") скинет в файл 10 строк(см пример выше). Ещё раз - ещё десять и так далее. Последний раз редактировалось VORP; 05.08.2013 в 15:51. |
|
![]() |
#6 |
Участник
|
следовательно чтобы что то выводилось в 11 и 12 колонки надо либо задать полям в этих колонках namedRanges, либо, если шаблон динамический - размножить ячейки в соответствующей строке.
|
|
![]() |
#7 |
Программатор
|
|
|
Теги |
open xml, ax2012 |
|
|