Preciso gerar um arquivo ".txt" nesse modelo:
"ItemCod";"CodInternoSolicitacao";"ItemEstoqueUM";"ItemQtdSolicitada"
82020100,00;013164;"PT";75
11150022,00;013164;"CX";10
Que no caso são 4 campos do meu formulário.
Preciso gerar através de um botão, então fui atrás de algo e encontrei a seguinte função:
function createFile() { var object = new ActiveXObject("Scripting.FileSystemObject"); var file = object.CreateTextFile("C:\Hello.txt", true);
file.WriteLine('Hello World');
file.WriteLine('Hope is a thing with feathers, that perches on the soul.');
file.Close();
}
Fiz o teste, porém da um erro de "ActiveXObject is no defined".
Alguém pode me ajudar?
Wesley, ActiveX é um componente proprietário da Microsoft e só vai funcionar no IE.
Para esse tipo de situação, normalmente se utilizaria de um serviço no server que escreva o arquivo e retorne ele pra você. O seu botão faria o acionamento desse seu serviço.
Mas tu pode tentar usar Blob, dá uma pesquisada sobre. Tem alguns exemplos
Stackoverflow
Saving-generated-files-on-the-client-side
Mas eu não sei o quão compatível isso está entre os browsers...
Opa Rafael, obrigado pela dica, eu cheguei a pesquisar sobre, e achei uma solução que funcionou perfeitamente.
Eu pego quatro campos da minha tabela e populo meu txt, vou compartilhar!
function gerarTxt() {
var linhas = $("#tblMaterialEstoque tbody tr").length;
var materiais = document.getElementsByClassName('material');
var tudo = "";
for(var i = 1; i < linhas; i++){
var idx = materiais[i].name.split("___")[1];
var textoCodigo = document.getElementById("_codigo___" + idx).value;
var textoRequisicao = document.getElementById("nr_requisicao").value;
var textoUnidade = document.getElementById("unidade___" + idx).value;
var textoQuantidade = document.getElementById("_quantidade___" + idx).value;
var colunas = '"ItemCod";"CodInternoSolicitacao";"ItemEstoqueUM";"ItemQtdSolicitada" \n';
//Montando a linha com os campos da tabela
tudo += (textoCodigo + ",00" + ";" + textoRequisicao + ";" + '"' + textoUnidade + '"' + ";" + textoQuantidade + "\n");
}
var blob = new Blob([colunas, tudo], {//Montando a estrutura do arquivo
type: 'text/plain'
});
var fileNameToSaveAs = "SOLIC";//Nome do arquivo
var downloadLink = document.createElement("a");
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = "Download File";
if (window.webkitURL != null) {
downloadLink.href = window.webkitURL.createObjectURL(blob);
} else {
downloadLink.href = window.URL.createObjectURL(blob);
downloadLink.onclick = destroyClickedElement;
downloadLink.style.display = "none";
document.body.appendChild(downloadLink);
}
downloadLink.click();
}