Показать сообщение отдельно
Старый 27.11.2023, 15:47   #4  
trud is offline
trud
Участник
Лучший по профессии 2017
 
1,039 / 1635 (57) ++++++++
Регистрация: 07.06.2003
Записей в блоге: 1
В общем получилось решить меняя местами эти теги при сохранении. Код для этого ниже

X++:
using DocumentFormat.OpenXml;

[ExtensionOf(classstr(OxmlWorksheet_RU))]
final class OxmlWorksheet_RUDEV_Extension
{
    private OpenXmlElement DEVsavedLastDrawingElement;

    public void save()
    {
        if (this.rowBreaks().elements())
        {
            this.DEVremoveDrawing(worksheet);
        }

        next save();
        
        if (DEVsavedLastDrawingElement != null)
        {
            OXML_RU::appendChild(worksheet, DEVsavedLastDrawingElement);
        }

    }

    //fixing the bug where page break element should be before the drawing
    public void DEVremoveDrawing(DocumentFormat.OpenXml.OpenXmlElement _parent)
    {

        OpenXmlElement lastDrawingElement;

        int i;
        i = worksheet.ChildElements.get_Count();

        lastDrawingElement = _parent.get_LastChild();

        str name = lastDrawingElement.get_LocalName();
        if (name == "drawing")
        {
            DEVsavedLastDrawingElement = lastDrawingElement.CloneNode(true);
            lastDrawingElement.Remove();
        }
    }

}
За это сообщение автора поблагодарили: SRF (1).