Dynamics AX:从客户端上的 excel 导入数据时出错

Dynamics AX : error while importing data from excel on client

我做了一个自定义的 X++ 代码来将数据从 Excel 导入到总帐,但是直接在服务器上导入工作得很好,但是 运行 它是从最终用户(客户端)导入的导入多条记录(比如 24 条记录)然后抛出错误

the number of argument provided is different from the number of argument provided to the method

很明显该错误与连接问题有关,因为我在服务器上尝试了相同的 Excel 文件并成功导入。

为了防止这个问题,我正在考虑替代解决方案,而不是循环遍历 excel 文件并执行业务并插入记录,相反,我认为保存文件可能会有用直接/批量保存在 table 或其他内容中,然后尝试遍历 table 以防止连接问题。

注意:google 上有多种解决方案可用,例如 windows 重影,但 none 对我有效

任何人都可以就此提出建议或建议 suitable 解决方案

我建议您将 Excel 文件保存为 tab-separated 文本,然后使用 TextIO class 进行导入。

您还将受益于 +10 倍的性能提升!

static void ExcelTest(Args _args)
{
    #Excel
    FilePath excelFile = @'C:\Users\user\Documents\MyExcelFile.xlsx';
    FilePath textFile  = @'C:\Users\user\Documents\MyTextFile.txt';
    Microsoft.Office.Interop.Excel.Application  application = new Microsoft.Office.Interop.Excel.ApplicationClass();
    Microsoft.Office.Interop.Excel.Workbooks    workBooks   = application.get_Workbooks();
    Microsoft.Office.Interop.Excel.Workbook     workBook; 

    // Save the excel file as tab-separated text
    application.set_DisplayAlerts(false);
    application.set_Visible(false);
    new FileIOPermission(excelFile, 'r').assert();
    workBooks.Open(excelFile, 0, true, 5, '', '', true, #xlWindows, '', false, false, 1, false, false, 1);
    CodeAccessPermission::revertAssert();
    workBook  = workBooks.get_Item(1);
    new FileIOPermission(textFile, 'w').assert();
    CodeAccessPermission::revertAssert();
    workBook.SaveAs(textFile, #xlTextWindows, '', '', false, false, null, #xlLocalSessionChanges, false, null, null, false);
    workBooks.Close();
    application.Quit();

    // Now read the text file
    new FileIOPermission(textFile, 'r').assert();
    io = new TextIo(textFile, 'r');
    if (!io)
        throw error("@SYS18447");
    io.inFieldDelimiter('\t');
    for (con = io.read(); io.status() == IO_Status::Ok; con = io.read())
    {
        info(con2str(con));
    }
}