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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.08.2016, 11:20   #1  
Artikov is offline
Artikov
Участник
 
33 / 12 (1) ++
Регистрация: 06.06.2016
Проблема с формулами в Excel
Всем доброго времени суток!

Проблема в следующем: из textBuffer в excel записываю данные. Некоторые их этих данных - формулы в виде "=...", однако excel изначально эти формулы не воспринимает. Работать они начинают только в том случае, если выделить формулу в ячейке и нажать enter. Или если выделить все ячейки с формулами и заменить "=" на "=". Но хотелось бы как-то это автоматизировано сделать, чтобы формулы были рабочими сразу. Но не особо представляю, как реализовать. Формат ячеек в шаблоне Excel, куда записываются формулы, общий.
Старый 23.08.2016, 11:24   #2  
Craz is offline
Craz
Участник
 
56 / 19 (1) ++
Регистрация: 17.09.2009
Цитата:
Сообщение от Artikov Посмотреть сообщение
Проблема в следующем: из textBuffer в excel записываю данные. Некоторые их этих данных - формулы в виде "=...", однако excel изначально эти формулы не воспринимает.
Каким методом аксапты записываете?
Там есть специальный метод InsertFormula на ComExcelDocument_RU, который использует COM метод FormulaR1C1, у меня проблем не возникало.
Старый 25.08.2016, 14:31   #3  
Player1 is offline
Player1
Участник
Самостоятельные клиенты AX
 
306 / 137 (5) +++++
Регистрация: 21.04.2008
Формулы вида '=RC[-2]+RC[-1]' или '=J4-D4' ?

Можно так:
X++:
                TextToColumns = range.TextToColumns();
                range.NumberFormat("# ##0,0");
это команда текст по столбцам, в range - рэнж колонки с формулами, TextToColumns - переменная типа COM

Последний раз редактировалось Player1; 25.08.2016 в 14:44.
Старый 25.08.2016, 14:56   #4  
Artikov is offline
Artikov
Участник
 
33 / 12 (1) ++
Регистрация: 06.06.2016
Запись в Excel происходит следующим образом:

есть такой объект
Microsoft.Office.Interop.Excel.Range tmpRange;

мы берем, копируем в буффер обмена данные из текстового буфера:
_textBuffer.toClipboard();

А после этого просто вставляем из этого буффера обмена в excel:
tmpRange.PasteSpecial(xlPasteTypeAll, xlPasteSpecialOperation, missing, missing);

При этом заметил, что формулы, которые проделывают только математические операции ( к примеру =A1+B2*10) в Excel работают, а формулы, которые содержат слова (СУММ, ПРАВсимв и т.д.) воспринимаются только после ручной активации.
Старый 25.08.2016, 15:36   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от Artikov Посмотреть сообщение
При этом заметил, что формулы, которые проделывают только математические операции ( к примеру =A1+B2*10) в Excel работают, а формулы, которые содержат слова (СУММ, ПРАВсимв и т.д.) воспринимаются только после ручной активации.
Формулы с русскими именами функций нужно писать в FormulaLocal или FormulaR1C1Local, а для Formula и FormulaR1C1 можно использовать только оригинальные английские наименования
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
AX2009 проблема с отчетами excel на win7 danket DAX: Прочие вопросы 6 25.10.2013 09:33
проблема использования Excel через clr Batuev Artem DAX: Программирование 8 22.08.2011 18:01
"Печать" отчета в Excel - проблема с округлением real полей Яга DAX: Программирование 6 17.06.2011 14:57
Проблема некорректного вывода данных в EXCEL Dark Light DAX: Программирование 4 30.06.2009 14:43
Проблема с импортом из Excel через COM Romsrs DAX: Программирование 18 10.06.2008 10:34
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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