Excel не может получить данные с моего сервера C# RTD, отображается #N/AC#

Место общения программистов C#
Ответить
Anonymous
 Excel не может получить данные с моего сервера C# RTD, отображается #N/A

Сообщение Anonymous »

ОБНОВЛЕНИЕ: дополнительную информацию см. в конце моего исходного вопроса в ответ на комментарий @Selvin.
Я пытаюсь реализовать сервер RTD для использования с Excel. Тестовая среда:
Excel: Microsoft Office Excel 2007 (32-разрядная версия) со всеми параметрами безопасности и наиболее мягкими настройками (в основном разрешает все).
Мое приложение:
  • Построено с использованием Visual Studio 2012 (да, мне нужно обновить на днях)
  • WPF .exe с .NET 4.5
  • Принудительная 32-битная сборка (диспетчер задач подтверждает, что она загружается как 32-битная), чтобы упростить задачу.

    32-битная версия Excel должна иметь возможность подключаться к обычной 64-битной сборке моего приложения, поскольку это исполняемый файл и должен работать вне процесса, но поскольку это не сработало, я пытаюсь упростить правильную регистрацию 64-битной версии. WOW6432Node, чтобы его могли найти 32-разрядные приложения, немного сложнее.
  • Мой тестовый код RTD Server основан на превосходной серии статей Кенни Керра о RTD
    https://asp-blogs.azurewebsites.net/ken ... y-Articles
  • Использование подхода «без ссылки на Excel» (жестко запрограммированные GUID для интерфейсы)
  • Исполняемый файл имеет строгое имя
  • Исполняемый файл имеет кодовое обозначение (сертификат от Certum). Пробовал как обычный хэш SHA256, так и SHA1 на случай, если Excel 2007 не знает, как с этим справиться, хотя я думаю, что он просто вызывает соответствующие функции Win32 API для проверки.
Я пробовал зарегистрироваться сервер RTD двумя способами:
  • Использование RegistrationServices.RegisterAssembly - кажется, работает нормально (возвращает true и создаются записи реестра).
  • Также пробовал использовать RegAsm, который тоже работает нормально (вообще никаких ошибок или предупреждений), просто говорит: «Все типы зарегистрированы успешно)
Вот как я тест:
  • Откройте Excel
  • Введите следующую формулу в Excel

    Код: Выделить всё

    =RTD("MyApplicationProgID", "", "test")
    
  • После очень небольшой задержки Excel отображает #N/A
  • Похоже, что Excel нашел мой исполняемый файл, потому что если я попытаюсь удалить исполняемый файл, я получу сообщение «Действие невозможно выполнить, поскольку файл открыт в Microsoft Office Excel». Если я закрою Excel, я смогу удалить исполняемый файл.
  • Мой исполняемый файл ни в коем случае не отображается в диспетчере задач, поэтому, хотя Excel блокирует чтение файла, он не запускает его.
  • Я также пытался запустить приложение перед вводом формулы в Excel, но это тоже не работает.
Я ожидал, что мое приложение будет запущено, и мои точки останова в ServerStart (

Код: Выделить всё

IRTDUpdateEvent
callback) и ConnectData(int themeId,ref Array strings,ref bool newValues), но ничего из этого не происходит.
Поскольку исполняемый файл моего приложения заблокирован Excel, но на самом деле не запускается, я предполагаю, что Excel не нравится мое приложение по какой-то причине, но поскольку сообщения об ошибке нет, я понятия не имею, что это может быть. Есть какие-нибудь предложения относительно причины или способа выяснить, в чем заключается реальная проблема?
Я мог бы попробовать создать простой клиент RTD и посмотреть, будет ли он хотя бы подключаться. Если и это не сработает, возможно, будет проще выяснить, почему это не работает, но я надеюсь, что у кого-нибудь есть какие-либо предложения, прежде чем я это сделаю, потому что мне не нужен клиент RTD, и он может не сказать мне много о том, что не так с Excel.
Конец исходного вопроса
ОБНОВЛЕНИЕ: дополнительная информация
Прежде всего, у меня это работает в некоторой степени. Функция RTD, которую я использовал, не работает, но я обнаружил, что все следующие три работают:
  • Код: Выделить всё

    =RTD("MyApplicationProgID", 
    
    Подробнее здесь: [url]https://stackoverflow.com/questions/78924441/excel-unable-to-get-data-from-my-c-sharp-rtd-server-displays-n-a[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»