AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 26.01.2015, 14:00   #13  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2494 (89) +++++++++
Регистрация: 20.08.2005
Это неправильно.
Вместо формулы, у вас получается значение в ячейке

Надо добавить в класс OXMLCell_RU подобный метод
X++:
public void setFormula(str _formula)
{
    DocumentFormat.OpenXml.OpenXmlElementList       oxmlElementList;
    DocumentFormat.OpenXml.OpenXmlElement           oxmlElement;
    DocumentFormat.OpenXml.Spreadsheet.CellFormula  cellFormula;

    System.Collections.IEnumerator                  enumerator;
    ;

    oxmlElementList = cell.get_ChildElements();
    enumerator      = oxmlElementList.GetEnumerator();

    while (enumerator.MoveNext())
    {
        oxmlElement = enumerator.get_Current();

        if (oxmlElement is DocumentFormat.OpenXml.Spreadsheet.CellFormula)
        {
            cellFormula = oxmlElement as DocumentFormat.OpenXml.Spreadsheet.CellFormula;
            break;
        }
    }
    if (!cellFormula)
    {
        //BP deviation documented
        cellFormula = new DocumentFormat.OpenXml.Spreadsheet.CellFormula();
        cell.set_CellFormula(cellFormula);
    }

    cellFormula.set_Text(_formula);
}
В классах OxmlWorkBook_RU и XMLExcelDocument_RU реализовать интерфейсные методы для доступа к этой функции, наподобие insertValue().

И использовать для создания/изменения формулы эти методы
Сами формулы должно записываться в АНГЛИЙСКОМ варианте, независимо от языка используемого офиса. Т.е. SUM, вместо СУММ и т.п.

Так же, если формулы были сохранены в шаблоне, то что бы они пересчитались с учетом изменений в данных, необходимо вызвать подобный метод

X++:
protected void setWorkbookParms()
{
    DocumentFormat.OpenXml.Packaging.WorkbookPart   workbookPart;
    DocumentFormat.OpenXml.Spreadsheet.Workbook     workbook;
    DocumentFormat.OpenXml.Spreadsheet.CalculationProperties    calcProperties;
    DocumentFormat.OpenXml.BooleanValue             trueValue;
    ;

    workbookPart = document.workbook().workbookPart();
    workbook = workbookPart.get_Workbook();
    calcProperties = workbook.get_CalculationProperties();
    trueValue = new DocumentFormat.OpenXml.BooleanValue(true);
    calcProperties.set_FullCalculationOnLoad(trueValue);
    calcProperties.set_ForceFullCalculation(trueValue);
}
при формировании отчета (где-нибудь в конце createReport(), либо внести его в реализацию XMLExcelDocument_RU и использовать после вызова createReport())
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: raniel (1), Морковка (1).
Теги
merge, xmlexceldocument_ru

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
XMLExcelDocument_RU вставка string ackid DAX: Программирование 2 22.09.2014 10:53
объединение ячеек при формировании Excel NickMDAX DAX: Программирование 11 05.03.2012 08:09
ALEG: Блог переехал на новую площадку tools4cio.ru Blog bot DAX Blogs 0 23.02.2009 18:05
Вопрос по классу SalesPurchReport_RU Кирилл DAX: Программирование 4 27.02.2004 13:28

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:41.