Показать сообщение отдельно
Старый 19.03.2023, 18:49   #7  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Нашел способ сохранять лист Эксель через OpenXML таким образом, чтобы удалить из каждой ячейки информацию о схеме. Форматирование ячеек при этом пропало, но для этого отчета не повлияло на его внешний вид, только границы ячеек не прорисовались для динамически добавленных строк.

1) В метод XMLExcelDocument_RU::newFromFile() в третий параметр _templateMode вместо значения true передавать значение false.
X++:
    document = XMLExcelDocument_RU::newFromFile(TemplateProvider_RU::getFor(this).get(this.templateName()),
                                                    newFileName,
                                                    false);
2) В методе XmlExcelReport_RU.execute() убрать следующую строку кода:
X++:
    //document.insertRowsByBookmark(_bookmark, (getHeight ? height : 0));
3) В заголовок класса XmlExcelReport_RU добавить объявление переменной numOfRows:
X++:
    int numOfRows;
4) В методе XmlExcelReport_RU.insertValueToSection()
X++:
    //Заменить строку 
    //row    = conPeek(rangeInfo, #posFromRow);
    //На строку
    row    = conPeek(rangeInfo, #posFromRow) + numOfRows;
5) В конце метода XmlExcelReport_RU.execute() добавить строку кода:
X++:
    numOfRows ++;
Я на самом деле всё это сделал не внутри классов XmlExcelReport_RU и XMLExcelDocument_RU, а создал новый класс - копию от класса, производного от XmlExcelReport_RU. И все эти изменяемые методы скопировал и изменил в этом новом классе.

Позже сообщу, насколько удалось ускорить открытие получившегося файла в Экселе.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/

Последний раз редактировалось Ace of Database; 19.03.2023 в 18:56.
За это сообщение автора поблагодарили: sukhanchik (10).