C#: работа с формулами в MS Excel
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



C#: работа с формулами в MS Excel Expand / Collapse
Автор
Сообщение
02.08.2005 23:53
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.09.2005 10:55
Сообщ.: 6, Visits: 67
Работая над международным студенчским проектом, мне пришлось столкнуться с задачей вывода формул из C# в лист Excel (формировании строки формулы производится в C#). Но поскольку проект международный, то, понятное дело, нельзя использовать наши формулы СУММ, ЕСЛИ и т.д. в то же время необходимо, чтобы и наш Excel понимал, что написано в строке формул. С VBA все гораздо проще там можно использовать английские названия функцмй - и Excel их прекрасно интерпретирует, напрпимер:
ActiveCell.FormulaR1C1 = "=SUMIF(R[-18]C:R[-4]C,"">"""""",R[-18]C[1]:R[-4]C[1])" 

В C# при использовании тех же объектов Excel:
oRng = oSheet.get_Range("I21","I21");		
oRng.Select();
oXL.ActiveCell.Formula = "=SUM(R[-10]C:R[-1]C)";

интерпретируются только ссылки на ячейки, а сама формула, работающая в VBA, не распознается.
Вариант с использованием русских формул не проходит:
1)если я формирую лист на своей машине с русским Office, то все работает и даже если я открываю файл на компьтере с иной языковой поддержкой MS Office.
2)В то же время, если запустить прогу на машине без руссифицированного Office, то сформировавшиеся в Excel-файле формулы не распознаются даже у меня (хотя и отображаются в ячейках на русском).
Сообщ. #877300
03.08.2005 0:04


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.04.2007 23:36
Сообщ.: 1 541, Visits: 16 997
Уже не так давно поднимался этот вопрос - поищи...

З.Ы. Честное слово - я так и не нашел, как же заставить этого негодяя Ексела понимать формулы в едином стандарте...

З.З.Ы. Можно сколько угодно кричать, что "надо писать английские названия - и все будет работать везде", и по справке это действительно так (для написания функций в региональном стандарте служит, по идее, свойство FormulaLocal). Но тем не менее это _не работает_!



Сообщ. #877301
08.08.2005 21:08
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.09.2005 10:55
Сообщ.: 6, Visits: 67
Перепробовал кучу способов, но ни один так и не заработал - ,действительно, негодяй Excel.
Что решил сделать: узнавать версию Excel''я и в зависимости от языка версии заполнять ячейку ссответствующей формулой. Тройная работа, но благо синтаксис функций в разных языковых версиях остается одинаковым.
Кто-нибудь, знает, такой метод объекта Application, позволяющий выяснить версию соответствующего вызываемого приложения.
Заранее спасибо за помощь.
Сообщ. #877737
09.08.2005 0:48


Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 23.04.2007 23:36
Сообщ.: 1 541, Visits: 16 997
[quote="yuroops"]Кто-нибудь, знает, такой метод объекта Application, позволяющий выяснить версию соответствующего вызываемого приложения.[/quote]

очевидно, как-то так: http://msdn.microsoft.com/library/en-us/vbaof11/html/ofobjLanguageSettings_HV05250883.asp



Сообщ. #877749
09.08.2005 13:56
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.09.2005 10:55
Сообщ.: 6, Visits: 67
@Messir
Огромное спасибо теперь проблема решена, хотя бы таким образом
Сообщ. #877797
09.08.2005 18:53
новичок

новичокновичокновичокновичокновичокновичокновичокновичок

участник
Last Login: 07.09.2005 10:55
Сообщ.: 6, Visits: 67
Ксати, нашелся метод ввода формул в едином формате в Excel. Кому интересно - вот ссылка
http://blogs.msdn.com/eric_carter/archive/2005/06/15/429515.aspx Но, насколько я понял, пока еще интеграция .Net с офисом весьма громоздкая (тот же Visual Studio Tools for Office, входящий в Visual Studio 2005 beta)и по-прежнему уступает VB и тем более встроенному в офис VBA.
Сообщ. #877864
« пред. тема | след. тема »


Эту тему читают Expand / Collapse
Посетители: 0 (0 гостей, 0 участников, 0 скрыт.участников)
Сейчас нет участников, просматривающих тему.
Модераторы: Alexey, boombastik, bazile, pl

Время GMT +3:00, Сейчас 11:17