|
|
|
новичок
      
участник
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-файле формулы не распознаются даже у меня (хотя и отображаются в ячейках на русском).
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.04.2007 23:36
Сообщ.: 1 541,
Visits: 16 997
|
|
Уже не так давно поднимался этот вопрос - поищи...
З.Ы. Честное слово - я так и не нашел, как же заставить этого негодяя Ексела понимать формулы в едином стандарте...
З.З.Ы. Можно сколько угодно кричать, что "надо писать английские названия - и все будет работать везде", и по справке это действительно так (для написания функций в региональном стандарте служит, по идее, свойство FormulaLocal). Но тем не менее это _не работает_!
|
|
|
|
|
новичок
      
участник
Last Login: 07.09.2005 10:55
Сообщ.: 6,
Visits: 67
|
|
Перепробовал кучу способов, но ни один так и не заработал - ,действительно, негодяй Excel.
Что решил сделать: узнавать версию Excel''я и в зависимости от языка версии заполнять ячейку ссответствующей формулой. Тройная работа, но благо синтаксис функций в разных языковых версиях остается одинаковым.
Кто-нибудь, знает, такой метод объекта Application, позволяющий выяснить версию соответствующего вызываемого приложения.
Заранее спасибо за помощь.
|
|
|
|
|
Supreme Being
      
участник
Last Login: 23.04.2007 23:36
Сообщ.: 1 541,
Visits: 16 997
|
|
|
|
|
|
новичок
      
участник
Last Login: 07.09.2005 10:55
Сообщ.: 6,
Visits: 67
|
|
@Messir
Огромное спасибо теперь проблема решена, хотя бы таким образом
|
|
|
|
|
новичок
      
участник
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.
|
|
|
|