Método para Exportar tabla a Excel
Escrito por René Roca el . Posteado en X++En algunas ocasiones, nos interesa exportar el contenido de una tabla de Axapta al Excel.
A continuación os dejo un Job, que pasando el TableId, nos exportará y abrirá la información de la tabla de Axapta en Excel, mostrando la cabecera de cada campo y su contenido.
static void DAXExport(TableId tableId) { DictTable dt; DictField df; Common c; CommaIO cio; Container con, conSkip; int field, counter; str line, fieldName; str fileName; ; StartLengthyOperation(); //Access Table based on TableId dt = new DictTable(tableId); //For Table schema c = dt.makeRecord(); //To access records c.selectForUpdate(false); //Create temporary file fileName = strFmt('%1\\ax_%2.csv', WinAPI::getTempPath(), dt.name()); cio = new CommaIO(fileName, "W"); if(cio) { cio.outFieldDelimiter(';'); //Column header line = ""; for(field = 1; field <= dt.fieldCnt(); field++) { //Skip System Columns switch(dt.fieldName(dt.fieldCnt2Id(field))) { case 'modifiedDateTime': case 'dEL_ModifiedTime': case 'modifiedBy': case 'modifiedTransactionId': case 'createdDateTime': case 'dEL_CreatedTime': case 'createdBy': case 'createdTransactionId': case 'dataAreaId': case 'sequenceNum': case 'recVersion': case 'unionAllBranchId': case 'rowNumber': case 'RecId': case 'TableId': conSkip = conins(conSkip, maxint(), field); break; default: con = conins(con,field,dt.fieldName(dt.fieldCnt2Id(field))); } } cio.writeExp(con); con = conNull(); //Table records while select c { line = ""; for (field = 1; field <= dt.fieldCnt();field++) { if(0 == confind(conSkip, field)) con = conins(con, field, c.(dt.fieldCnt2Id(field))); } cio.writeExp(con); con = conNull(); counter++; } } EndLengthyOperation(); info(strfmt("%1 registros de la tabla '%2' exportados", counter, dt.name())); //Open CSV file in registered app WinAPI::shellExecute(fileName); }