Método para Exportar tabla a Excel
En algunas ocasiones, nos interesa exportar el contenido de una tabla de Axapta al Excel.
A continuación os dejo un Job, que pasandole 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); }


