Показать сообщение отдельно
Старый 28.09.2020, 10:43   #1  
Ace of Database is offline
Ace of Database
Участник
Аватар для Ace of Database
 
870 / 637 (23) +++++++
Регистрация: 14.10.2004
Преобразовать 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/