/*****************************************************************************/ /* omega.phamework.com */ /* Sat, 09 Dec 2023 15:34:48 +0100 */ /*****************************************************************************/ function JSArrayExportCSV( arrRows , strFilename , bSemicolonAsDelimiter ) { strFilename = ( typeof strFilename !== 'string' ) ? '' : strFilename; bSemicolonAsDelimiter = ( typeof bSemicolonAsDelimiter !== 'boolean' ) ? false : bSemicolonAsDelimiter; if( Array.isArray( arrRows ) ) { } else if( typeof arrRows === 'object' ) { var arrCR = []; for( var intCCR in arrRows ) { arrCR.push( [ intCCR , arrRows[ intCCR ] ] ); } arrRows = arrCR; } else { return false; } var getRowAsCSVLine = function( arrRow , bSAD ) { var strRV = ''; for( var intX = 0 ; intX < arrRow.length ; intX++ ) { var strCV = ( arrRow[ intX ] === null ) ? '' : ( ( arrRow[ intX ] instanceof Date ) ? arrRow[ intX ].toLocaleString() : arrRow[ intX ].toString() ); var strRX = strCV.replace( /"/g , '""' ); if( ( bSAD ) && ( strRX.search( /("|;|\n)/g ) >= 0 ) ) { strRX = '"' + strRX + '"'; } if( ( ! bSAD ) && ( strRX.search( /("|,|\n)/g ) >= 0 ) ) { strRX = '"' + strRX + '"'; } strRV += ( ( intX > 0 ) ? ( ( ( bSAD ) ? ';' : ',' ) + strRX ) : strRX ); } return strRV + '\n'; }; var strOut = ''; for( var intOI = 0 ; intOI < arrRows.length ; intOI++ ) { strOut += getRowAsCSVLine( arrRows[ intOI ] , bSemicolonAsDelimiter ); } var objBE = new Blob( [strOut] , { type: 'text/csv;charset=utf-8;' } ); if( navigator.msSaveBlob ) { if( navigator.msSaveBlob( objBE , strFilename ) ) { return true; } } else { var objAL = document.createElement( 'a' ); if( objAL.download !== undefined ) { var strHU = URL.createObjectURL( objBE ); objAL.setAttribute( 'href' , strHU ); objAL.setAttribute( 'download' , strFilename ); objAL.style.visibility = 'hidden'; document.body.appendChild( objAL ); objAL.click(); document.body.removeChild( objAL ); return true; } } return false; }