AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen Alle Foren als gelesen markieren

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 04.04.2016, 14:15   #1  
raniel ist offline
raniel
Участник
Benutzerbild von raniel
 
241 / 11 (1) +
Registriert seit: 20.10.2006
XMLExcelDocument_RU вставка значения построчно. Ax2012
Добрый день всем.
Реализую выгрузку в Excel на большой объём данных(более 50 тыщ строк)
Использую класс XMLExcelDocument_RU. Выгрузка через него происходит молнейностно в сравнении с ComExcelDocument_RU. Но на больших данных скорость падает экспоненциально(до часа и более). Решил оптимизировать выгрузку заполняя отчёт не по ячейкам а по строчно. И никак у меня это не получается. Пробовал передавать и строку разделённую табуляцие, и передавал массив...так же указывал и правильный Range. Но всё равно в Excel-е пишет всё в одну колонку.
Кто нить сталкивался с данной проблемой, и как её решил?
Спасибо.

X++:
    XMLExcelDocument_RU                         excellDocument;
    OXMLWorksheet_RU                            worksheet;
    OXMLWorkbook_RU                             workbook;
    Bookmark                                    bookmark;
    int                                         rowNum,colNum,lineNo,countCol;
    Filename                                    newFileName;
    Filename                                    newPathFileName;
    Array                           arr = new Array(Types::String);
    str                             strVal;
    
    rowNum = 10;
    newFileName = WinAPI::getTempPath() + #reportSubFolder + "TestXLS.xlsx";
    
    excellDocument = XMLExcelDocument_RU::newFromFile(TemplateProvider_RU::getFor(_args).get(resourceStr(Resourse)), newFileName);

    strVal = num2char(9)+"qqq";
    strVal = strVal + num2char(9)+"333";
    strVal = strVal + num2char(9)+"rrrrrrrrr";
    strVal = strVal + num2char(9)+"23323";
    
    arr.value(colNum,"1111");
    colNum++;
    arr.value(colNum,"aaaaaa");
    colNum++;
    arr.value(colNum,"2222");
    colNum++;
    arr.value(colNum,"asdsasda");
    colNum++;
    
    
    workbook = excellDocument.workbook();
    worksheet = workbook.getWorksheet();
    
    bookmark = '';
    bookmark = ComExcelDocument_RU::numToNameCell(1,rowNum) +':'+ComExcelDocument_RU::numToNameCell(4,rowNum);
    bookmark = ComExcelDocument_RU::replaceWorksheetName(bookmark,worksheet.Name());
    worksheet.
    excellDocument.insertValue(bookmark, arr);
Alt 04.04.2016, 14:29   #2  
NeveB ist offline
NeveB
Участник
 
60 / 16 (1) ++
Registriert seit: 14.11.2003
Ort: Mosсow
Это известная проблема Open XML - колоссальный упадок производительности с увеличением объема данных. Построчная запись тут не поможет. Выход - использовать .Net Streams для вывода данных порционно.
Я бы посоветовал воспользоваться Ado.Net - хорошо работает с большими объемами как на клиенте так и на сервер, как на чтение так и на вставку записей.
Alt 04.04.2016, 14:33   #3  
gl00mie ist offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.684 / 5813 (201) ++++++++++
Registriert seit: 28.11.2005
Ort: Москва
Blog-Einträge: 3
Zitat:
Zitat von raniel Beitrag anzeigen
Реализую выгрузку в Excel на большой объём данных(более 50 тыщ строк) Использую класс XMLExcelDocument_RU. Но на больших данных скорость падает экспоненциально(до часа и более).
Коллеги замечали, что штатный OpenXML SDK начинает ощутимо тормозить при размере выходного файла порядка 450kb и более, и это не лечится. Точнее, лечится использованием другого движка генерации файлов Excel. Заметьте, что в AX7 не используют "свой же" OpenXML SDK - там решили использовать стороннюю библиотеку EPPlus, что тоже как бы намекает...
This post has been rated by: trud (1), MikeR (6), raniel (1), Dreadlock (3).
Alt 04.04.2016, 15:24   #4  
raniel ist offline
raniel
Участник
Benutzerbild von raniel
 
241 / 11 (1) +
Registriert seit: 20.10.2006
Спасибо. Ну а если вставить заранее сформированный массив? Тут вопрос чтоб он разбился по ячейкам.
Alt 21.07.2016, 13:18   #5  
Craz ist offline
Craz
Участник
 
56 / 19 (1) ++
Registriert seit: 17.09.2009
Zitat:
Zitat von gl00mie Beitrag anzeigen
Заметьте, что в AX7 не используют "свой же" OpenXML SDK - там решили использовать стороннюю библиотеку EPPlus, что тоже как бы намекает...
Скажите, а пробовал кто-то и есть вообще такая возможность прикрутить эту библиотеку EPPlus к Ax2009?
Alt 04.04.2018, 18:07   #6  
AnGor ist offline
AnGor
Участник
Benutzerbild von AnGor
 
97 / 46 (2) +++
Registriert seit: 30.08.2007
Ort: Ulm
Blog-Einträge: 6
Zitat:
Zitat von Craz Beitrag anzeigen
Скажите, а пробовал кто-то и есть вообще такая возможность прикрутить эту библиотеку EPPlus к Ax2009?
I've made an example in AX 2012 R3. I think it's possible in 2099 too:
http://axforum.info/forums/blog.php?b=8261
Alt 05.04.2018, 10:36   #7  
NickMDAX ist offline
NickMDAX
Участник
 
16 / 11 (1) +
Registriert seit: 12.09.2011
Ort: Moscow
Zitat:
Zitat von AnGor Beitrag anzeigen
I've made an example in AX 2012 R3. I think it's possible in 2099 too:
http://axforum.info/forums/blog.php?b=8261
Да, все именно так, как описал gl00mie, на 2009 все работает. EPPlus.dll должна лежать в папке клиента и сервера. Ну и в AX импортировать в узел References репозитария.
Angehängte Dateien
Dateityp: zip EPPlus 4.0.4.zip (599,3 KB, 117x aufgerufen)
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
модификация taxTrans_RU в пакетном режиме в классе GoodsInRouteUpdate_RU Владимир Максимов DAX: Программирование 0 13.08.2015 18:13
Макросы StartSafeCall_RU at5454 DAX: Программирование 3 24.04.2015 16:55
XMLExcelDocument_RU объединение ячеек и вставка картинки raniel DAX: Программирование 13 26.01.2015 14:45
Ax3 - Модуль Учет затрат egorych DAX: Функционал 15 12.12.2013 17:58
axforum blogs: Формат адресов. AddressMap_RU Blog bot DAX Blogs 0 08.02.2011 12:11
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 21:57 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.