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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.07.2021, 01:00   #1  
MaxOz is offline
MaxOz
Участник
 
13 / 10 (1) +
Регистрация: 09.06.2007
DAX2012: Еще раз про Excel в пакете
Добрый день всем.
Есть у нас класс по работе с Excel через .Net, несколько лет формируем через него отчеты для пользователей, но встала недавно задача запустить формирование Excel в пакете.
Теперь к сути вопроса.
Есть объекты:
X++:
Microsoft.Office.Interop.Excel.WorkbookClass        workbook;
Microsoft.Office.Interop.Excel.Worksheets           workSheets;
И строка для получения workSheets из workbook:
X++:
workSheets = workbook.get_Worksheets();
На клиенте эта строка отрабатывает без проблем, но в пакете появляется ошибка:
Код:
Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Interop.Excel.Worksheets'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000208B1-0000-0000-C000-000000000046}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
Кто сталкивался с подобным? Есть варианты вылечить?
PS: про SysExcel через .Net темы видел, но хотелось бы запустить уже существующий работающий класс в пакете.
Старый 28.07.2021, 08:25   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от MaxOz Посмотреть сообщение
PS: про SysExcel через .Net темы видел, но хотелось бы ...
Попробуйте посмотреть как сделано там и сделать так же. Там работает.
Старый 28.07.2021, 17:42   #3  
smailik is offline
smailik
Участник
Аватар для smailik
 
250 / 70 (3) ++++
Регистрация: 10.04.2012
Адрес: Москва
У вас какой класс в пакете крутится, тот и Excel формирует?
Старый 28.07.2021, 22:34   #4  
MaxOz is offline
MaxOz
Участник
 
13 / 10 (1) +
Регистрация: 09.06.2007
Цитата:
Сообщение от smailik Посмотреть сообщение
У вас какой класс в пакете крутится, тот и Excel формирует?
сейчас так: есть два класса - класс-пакетник и наш универсальный класс (NetExcel), с помощью которого работаем с Excel-файлами. В отдельном методе пакетного класса с помощью NetExcel формируется Excel-файл.
Можно логику по формированию Excel в отдельный класс вынести но пока на уровне тестов так.
Старый 29.07.2021, 12:30   #5  
SHiSHok is offline
SHiSHok
Участник
Аватар для SHiSHok
Дети Юза
 
219 / 103 (4) +++++
Регистрация: 28.07.2005
Адрес: Донецк
Через ADO работает нормально и на клиенте и в CIL
__________________
--- SHiSHok
Старый 30.07.2021, 06:58   #6  
Pandasama is offline
Pandasama
Участник
 
457 / 134 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Тупой, наверно, вопрос: а на сервере ничего доустановить не пробовали? .NET какой-нибудь версии, библиотеку какую-нибудь для офиса?
Старый 05.08.2021, 23:39   #7  
MaxOz is offline
MaxOz
Участник
 
13 / 10 (1) +
Регистрация: 09.06.2007
Всем спасибо за советы, помогло разобраться с проблемами разбор SysExcel, переделанного под .Net
Старый 06.08.2021, 06:24   #8  
Pandasama is offline
Pandasama
Участник
 
457 / 134 (5) +++++
Регистрация: 11.08.2014
Адрес: Барнаул
Так написали бы решение на будущее
Старый 06.08.2021, 08:29   #9  
SRF is offline
SRF
Участник
MCBMSS
Axapta Retail User
 
375 / 562 (19) +++++++
Регистрация: 08.08.2007
Записей в блоге: 1
Предполагаю, что поменяли тип по worksheets, возможно исправили ещё пару вызовов в своём классе, изначально Microsoft.Office.Interop.Excel.WorkbookClass возвращает коллекцию Microsoft.Office.Interop.Excel.Sheets, поэтому в CIL и валится ошибка про преобразование типов.

X++:
//Microsoft.Office.Interop.Excel.Worksheets           workSheets;
Microsoft.Office.Interop.Excel.Sheets                 workSheets;
__________________
Sergey Nefedov
За это сообщение автора поблагодарили: Logger (3), S.Kuskov (5).
Старый 06.08.2021, 20:45   #10  
MaxOz is offline
MaxOz
Участник
 
13 / 10 (1) +
Регистрация: 09.06.2007
Цитата:
Сообщение от SRF Посмотреть сообщение
Предполагаю, что поменяли тип по worksheets, возможно исправили ещё пару вызовов в своём классе, изначально Microsoft.Office.Interop.Excel.WorkbookClass возвращает коллекцию Microsoft.Office.Interop.Excel.Sheets, поэтому в CIL и валится ошибка про преобразование типов.

X++:
//Microsoft.Office.Interop.Excel.Worksheets           workSheets;
Microsoft.Office.Interop.Excel.Sheets                 workSheets;
все верно, поменял Microsoft.Office.Interop.Excel.Worksheets на Microsoft.Office.Interop.Excel.Sheets и Microsoft.Office.Interop.Excel.WorksheetClass на Microsoft.Office.Interop.Excel._Worksheet, иначе ошибка переходила уже на worksheet:

X++:
    //Microsoft.Office.Interop.Excel.WorksheetClass       worksheet;
    Microsoft.Office.Interop.Excel._Worksheet   worksheet;
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Специальные именованные диапазоны Excel и работа с ними в DAX2012 при помощи OXML Raven Melancholic DAX: Программирование 5 08.09.2020 16:25
Создать и заполнить Excel в пакете ackid DAX: Программирование 4 02.03.2015 11:25
atinkerersnotebook: Using Export To Excel in Dynamics AX to Create Reporting Data Sources Blog bot DAX Blogs 1 12.10.2013 01:13
atinkerersnotebook: Using the Dynamics AX Excel Add-In Blog bot DAX Blogs 1 25.09.2013 07:11
atinkerersnotebook: Walkthrough & Tutorial Summary Blog bot DAX Blogs 1 09.09.2013 09:11

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

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

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