GARANTIR DESCONTO

Fórum Javascript exportar csv IE #511144

19/02/2015

0

Olá,

Tenho o código abaixo para exportar uma tabela html para um arquivo csv. Consigo baixar o arquivo e abrir no excel. Meu problema é: quando baixo pelo Chrome o excel identifica o ";" e faz a divisão das colunas. Porém quando baixo pelo IE o excel não identifica o ";" e deixa todas as colunas na primeira célula.

Podem me ajudar? Segue meu código:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Export table to Excel in 10 lines</title>


<script>

function Exportar()
{
    var textRange; var j=0;
    var tab = document.getElementById("Tabela"); // id da tabela
    if(document.getElementById("Tabela").rows.length < 2){
    	alert("Por favor, realizar uma pesquisa antes de exportar.");
    }
    else{
        var a=[], csv='', LF='\r\n', r, c, rs, cs, row, cell, i, j, v;
	
		for (r=0; r<tab.rows.length; r++){
			row = tab.rows[r];
			
			for (c=0; c<row.cells.length; c++){
				cell = row.cells[c];
				rs = cell.rowSpan+r;
				cs = cell.colSpan+c;
				
				for (i=r; i<rs; i++){
					if (!a[i]){
						a[i]=[];
					}
					
					for (j=c; j<cs; j++){
						a[i].push(i>r || j>c ? '' : " " + cell.innerHTML);
					}
				}
			}
		}

        var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE "); 

        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // Se for Internet Explorer
        {
    		for (r=0; r<a.length; r++){
				v = '';
				for (c=0; c<a[r].length; c++){
					csv += (v + a[r][c]);
					v = ";";
				}
				csv += '\r\n';
			}
			
			txtArea1.document.open("txt/html","replace");
            txtArea1.document.write(csv);
            txtArea1.document.close();
            txtArea1.focus(); 
            sa = txtArea1.document.execCommand("SaveAs",true,"Socilitações.csv");	

        }  
        else
			for (r=0; r<a.length; r++){
				v = '';
				for (c=0; c<a[r].length; c++){
					csv += (v + a[r][c]);
					v = ";";
				}
				csv += "%0A";
			}	

			var a         = document.createElement('a');
			a.href        = 'data:text/csv;charset=UTF-8,' + csv;
			a.target      = '_blank';
			a.download    = 'Solicitações.csv';
			document.body.appendChild(a);
			a.click();
        	//sa = window.open('data:attachment/csv,' + encodeURIComponent(csv));  

    	return (sa);
    }
}


</script>
</head>
    
<body>
    <button onclick="Exportar()">Exportar</button>
    <br/>
    <span>
    <table id="Tabela">
        <tr>
            <td>5/1</td>
            <td>José</td>
        </tr>
        <tr>
            <td>10/3</td>
            <td>João</td>
        </tr>
        <tr>
            <td>5/1</td>
            <td>Maria</td>
        </tr>
    </table>
    <iframe id="txtArea1" style="display:none"></iframe>
    </span>
</body>
</html>
Douglas Emerick

Douglas Emerick

Responder

Post mais votado

19/02/2015

Acho que achei uma possivel solução, olhe aqui [url]http://stackoverflow.com/questions/18185660/javascript-jquery-exporting-data-in-csv-not-working-in-ie[/url]

Marcelo Pastore

Marcelo Pastore
Responder

Gostei + 1

Mais Posts

20/02/2015

Douglas Emerick

Marcelo, muito bom o seu link. Era exatamente o que eu precisava. Só mais uma dúvida. Tem como eu fixar a extensão, pois no IE 11 não aparece na janela a extensão do arquivo. Caso o usuário altere ele não salva com a extensão cvs.
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar