|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
12.09.2017, 09:39 | #1 |
Регистрация: 12.09.2017
Сообщений: 3
|
C# VSTO для Excel
Суть: пишется надстройка для Excel с некоторым пользовательским функционалом.
Есть задача программно записать формулу расчета в определенный набор ячеек листа. Расчет ведется с применением именованных диапазонов с того же листа. Например, есть столбец данных, поименованный как "_Имя_", требуется рядом с ним образовать столбец (объект Range), у которого формула будет _Имя_*2. Сама формула, образованная по всем правилам Excel, берется из другого места, например, из текстового файла. Соответственно, все сводится вкратце к следующему коду: [CSHARP] string fomula = ... //код получения строки формулы Range MyRange = SheetName.Range[...]; //в фигурных скобках указания о размере ренджа MyRange.Formula = formula; [/CSHARP] Проблема: Работает только тогда, когда в строке формулы не встречаются имена функций Excel, написанные по-русски. Например, если формула "=_Имя_*2" или "=SIN(_Имя_)", то все отлично работает, а если "=КОРЕНЬ(_Имя_)", то не работает, во всех ячейках диапазона появляется ошибка "ИМЯ". И следующий прикол: если кликнуть по строке формулы для ечейки с такой ошибкой, то все пересчитается и будет нормально показываться результат. Пробовал программно включать и выключать автоматическое вычисление формул, принудительно пересчитывать все формулы книги, листов, всего экселя. Не помогает. Пока не кликнешь - не посчитает формулу с русскими функциями. Думается, что проблема как-то связана с кодировкой, в которой передается русский текст в строку формул, но не знаю, куда в этом плане копать и как фиксить. Прошу совета. Версия Office: 2013. |
12.09.2017, 11:36 | #2 |
2 the Nation Glory
Старожил
Регистрация: 27.05.2014
Сообщений: 3,289
|
передавайте не русские формулы а те с которыми работает Ексель
=Корень(4) = =SQRT(4)
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы. |
12.09.2017, 11:55 | #3 |
Форумчанин
Регистрация: 09.05.2017
Сообщений: 751
|
А зачем C# использовать? Неужели нету VBA, да и в сам Excel можно просто формулы вписать да и все.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
|
12.09.2017, 13:50 | #4 | |
Регистрация: 12.09.2017
Сообщений: 3
|
Цитата:
Элементарно. 1)Я несколько лет работаю с C# и не в пример хуже знаю VBA, поэтому не горю желанием изучать его более глубоко, тем более, ради одного проекта. 2)Мне просто не нравится VBA. 3)Подозреваю, что даже его использование не решит проблемы, ибо суть моей проблемы кроется, вероятно, в нюансах объектной модели Excel, инвариантной к выбору языка. Простите, но но это уже софистика. Можно вообще ничего не автоматизировать.) Однако у меня есть конкретная задача, которую я должен выполнить. |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Макрос для выборки из таблицы Excel, для разговоров свыше 10 минут | Otellka | Microsoft Office Excel | 6 | 15.03.2016 18:16 |
Программа для автозаполнения документов для Windows (не через Word и Excel) | Ekvental | Софт | 7 | 07.04.2015 16:43 |
Запрет режима преобразования файлов excel 2007 для excel 2003 | ольгаг | Microsoft Office Excel | 4 | 28.03.2014 12:20 |
Установка VSTO надстройки на клиентский ПК | Vitek_DeadlyHunter | Общие вопросы .NET | 0 | 08.11.2013 21:55 |
Excel - Создать в Excel таблицу для расчета расхода материала для покраски пола комнаты | Дашкаа | Помощь студентам | 2 | 20.06.2011 15:44 |