03.09.2021, 10:50 | #1 |
Участник
|
DAX2009: экспорт через Группы определений + Excel 2013
Всем привет.
На терминале был удален Excel 2010 а вместо него установлен Excel 2013 из за чего перестал работать импорт/экспорт через группы определений. Цитата:
[c] \Classes\SysExcelApplication\save - 4
[c] \Classes\SysDataExcelCOM\save - 5 [c] \Classes\SysDataExcelCOM\buildWorkbooks - 89 [c] \Classes\SysDataExportExcel\export - 35 [c] \Classes\SysDataExportBase\run - 5 [c] \Classes\SysDataExport\main - 20 [c] \Classes\FormFunctionButtonControl\Clicked Цитата:
Метод "save" в COM-объекте класса "Excel.Application" возвратил код ошибки 0x800A03EC (<неизвестно>), который означает: Save method of Application class failed.
Цитата:
[c] \Classes\SysExcelApplication\construct - 1
[c] \Classes\SysDataExcelCOM\new - 4 [c] \Classes\SysDataExcelCOM\construct - 17 [c] \Classes\SysDataExportExcel\export - 30 [c] \Classes\SysDataExportBase\run - 5 [c] \Classes\SysDataExport\main - 20 [c] \Classes\FormFunctionButtonControl\Clicked X++: static client SysExcelApplication construct() { SysExcelApplication ret; COM excel; real excelVersion; ; try { excel = new COM(#EXCEL); } catch (Exception::Internal) { if (excel == null) { throw error("@SYS98748"); } } excelVersion = str2num(excel.version()); if (excelVersion >= 12.0) ret = SysExcelApplication_2007::construct(excel); // <-- тут else if (excelVersion >= 10.0) ret = SysExcelApplication_XP::construct(excel); else ret = SysExcelApplication_2000::construct(excel); return ret; } Видит что раз в системе установлен excel версии 15 (2013) значит подойдет класс SysExcelApplication_2007 и при попытке сохранить сгенерированный файл возникает ошибка, типа в Excel 2013 нет подходящего метода? Я верно понял ошибку? Подскажите есть уже готовые решения внедряющие такую поддержку Excel 2013 ? Как обойти такую ошибку? Последний раз редактировалось oleggy; 03.09.2021 в 11:02. |
|
03.09.2021, 13:54 | #2 |
Участник
|
Вот тут обсуждалась подобная проблема, возможно там уже посмотрели
Экспорт/импорт данных при помощи группы определения Судя по ответам, можно попробовать вызвать save на workbook, т.е. Classes\SysDataExcelCOM\save, вызывать не excel.save(), а как нибудь так excel.workbooks().workbook().saveAs\save И для корректного отображения придётся допилить метод, но это можно и не делать. X++: private LabelString excelVersion() { COM excelCOM = excel.comObject(); // BP Deviation documented real excelVersion = str2num(excelCOM.version()); switch (true) { case excelVersion < 10 : return #xlVersionOffice2000; case excelVersion == 10 : return #xlVersionOfficeXP; case excelVersion == 11 : return #xlVersionOffice2003; case excelVersion == 12 : return #xlVersionOffice2007; } return #xlVersionOffice2000; }
__________________
Sergey Nefedov |
|
09.09.2021, 05:10 | #3 |
Участник
|
|
|
09.09.2021, 13:00 | #4 |
Участник
|
Да, я про этот метод. Я к тому, что версия > 12 будет отображаться как office 2000, для эстетики надо бы и этот метод поправить, а так на функциональность он конечно влиять не будет.
__________________
Sergey Nefedov |
|
Теги |
com-объект, excel, excel 2013, excel com формат, группа определений |
|
|