![]() |
#1 |
Участник
|
Преобразовать HTML в Эксель в пакетной обработке в AX 2012
Привет всем!
AX 2012 R3. Есть потребность преобразовать файл HTML в Excel, и чтобы это работало в пакетной обработке. Я использую OpenXML для этих целей. Без пакетной обработки все работает (в том числе в CIL), но в пакетной обработке выскакивает ошибка "Object must implement IConvertible." Ругается на параметр fileFormat при вызове функции workbook._SaveAs X++: #Excel Microsoft.Office.Interop.Excel._Application excel; Microsoft.Office.Interop.Excel.Workbooks workbooks; Microsoft.Office.Interop.Excel._Workbook workbook; Microsoft.Office.Interop.Excel.Worksheet worksheet; System.Globalization.CultureInfo oldCI; System.Threading.Thread currentThread; System.Object missing = URTDotNetExcelDocument::getMissingCLRObject(); Microsoft.Office.Interop.Excel.XlFileFormat fileFormat; FileName xlsFileName; new InteropPermission(InteropKind::ClrInterop).assert(); excel = new Microsoft.Office.Interop.Excel.ApplicationClass(); workbooks = excel.get_Workbooks(); try { workbook = workbooks._Open(_filename, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing, missing); xlsFileName = strReplace(_fileName, ".html", ".xls"); con = str2con_RU(xlsFileName, "\\"); excel.set_DisplayAlerts(false); fileFormat = Microsoft.Office.Interop.Excel.XlFileFormat::xlExcel8; workbook._SaveAs(xlsFileName, fileFormat, //56, missing, missing, missing, missing, missing, missing, missing, missing, missing //,missing ); } catch (Exception::CLRError) { error(AifUtil::getClrErrorMessage()); } }
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
![]() |
#2 |
Участник
|
Есть ли какой-либо нормальный способ преобразования HTML в Эксель в пакетной обработке ? Может быть, запустить какой-нибудь сприпт на сервере (bat-файл, Power Shell, VB скрипт и т.д.) ?
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
![]() |
#3 |
Участник
|
Если я поменяю параметр fileFormat на missing, то все работает, файл сохраняется с расширением xls, но внутри содержит HTML. А мне надо, чтобы был формат Excel.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
![]() |
#4 |
Участник
|
А если просто вместо значения перечисления указать число? В 2009 с числом работает и в пакете (хотя, возмодно в 2012 пакетный сервер может работать и по другому).
Ну и у меня там 51, а не 56. PS: ну и речь, наверное идет не про OpenXML, а про Interop.Excel. Последний раз редактировалось Raven Melancholic; 28.09.2020 в 11:24. |
|
![]() |
#5 |
Участник
|
Да, я пробовал указать число - ошибка та же в пакете.
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
![]() |
#6 |
Участник
|
Цитата:
Просто я судорожно перебираю все технологии, которые возможны. ![]() ![]()
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
![]() |
#7 |
Участник
|
Замена параметра на константу 51 не помогла, та же ошибка "Object must implement IConvertible."
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ |
|
![]() |
#8 |
Участник
|
ИМХО, если работает просто так - но не работает в пакете, то вероятно проблема где-то в различиях клиент/сервер или CIL/не CIL
совпадают ли версии используемых библиотек на сервере и в клиенте? совпадают ли версии экселя? ну и, как боцманский вариант, наверно, можно написать на чистом .NET эксешник, который будет через эти же библиотеки делать те же действия, а потом в пакете просто вызывать этот экзешник передавая ему нужные параметры в командной строке? |
|
![]() |
#9 |
Участник
|
Заработало!
В 7-м параметре вместо слова missing надо было написать магическое заклинание Microsoft.Office.Interop.Excel.XlSaveAsAccessMode::xlNoChange, Вот так: X++: workbook._SaveAs(xlsFileName, fileFormat, //56, missing, missing, missing, missing, Microsoft.Office.Interop.Excel.XlSaveAsAccessMode::xlNoChange, missing, missing, missing, missing //,missing );
__________________
Мои утилиты для Аксапты версий 3.0-2012: http://aceofdatabase.blogspot.com/ Последний раз редактировалось Ace of Database; 28.09.2020 в 15:18. |
|
|
За это сообщение автора поблагодарили: AlGol (2), sukhanchik (2), Logger (3). |
|
|