方法&#39;价值&#39;在类&#39; Range&#39;的COM对象中返回错误代码0x800A03EC(<unknown>),表示:<unknown>。 AX 2012

时间:2016-11-04 20:22:51

标签: excel axapta dynamics-ax-2012 x++ dynamics-ax-2012-r2

我从excel表导入AX。所以过程:从excel中读取记录并将它们添加到临时表并填充网格。这是正在发生的过程。当我使用较少的记录ex:1400记录时,它导入网格没有问题。当我导入66000条记录时,它会抛出上述错误。有人可以建议我应该做什么,这样我一次可以导入60000条记录?我尝试重新启动AX,创建新的excel表格,这是建议在线.....没有任何作用。

1 个答案:

答案 0 :(得分:2)

是的,当开发任何导入Excel时有这个问题,当有很多行时。如果行数很少,那就完美了。

对于这种情况,请始终更改CSV导入的Excel导入。导入csv文件的代码永远不会失败并且运行良好。

这里我举一个例子来导入一个包含3行的csv文件。

<强> 代码:

static void Stack(Args _args)
{
    AsciiIo               asciiIo;
    container             con;
    FileIoPermission      perm;    
    boolean               _CortarProceso;
    IO_Status             aa;    
    str                   filename;
    str                   _row1, _row2, _row3;            

    Dialog                dialog;
    DialogField           dialogFileName;

    ;

    dialog         = new Dialog("Select CSV File");
    dialogFileName = dialog.addField(ExtendedTypeStr("FilenameOpen"),"Path File:");

    if (dialog.run())
    {
        filename = dialogFileName.value();
    }

    if (!filename)
    {
        return;
    }

    perm = new FileIoPermission(filename, "R");
    perm.assert();
    asciiIo = new AsciiIo(filename, "R");
    asciiIo.inFieldDelimiter(";");

    if (asciiIo != null)
    {
          con = asciiIo.read();
          while((asciiIo.status() == IO_Status::Ok) && (!_CortarProceso)){                          
              _Row1          = conPeek(con, 1); //Row1
              _Row2          = conPeek(con, 2); //Row2
              _Row3          = conPeek(con, 3); //Row3

              if(_row1 != ""){
                  //Your Code...      
                  //Your Code...
                  //Your Code...
                  //Your Code...
                  //Your Code...
              }else{
                  _CortarProceso = true;
              }                        
              con = asciiIo.read();
          }

    }

    info("Process End");
}