Jump to content
waguinho

[Resolvido] XLSX para JSON acessando "sub abas" do arquivo Execel

Recommended Posts

Bom dia!

 

Estou com problema quando converto um arquivo do Excel com extensão XLSX para JSON javascript, o método está funcionando normalmente,

recebo um Array com objetos, porém esse Array só vem com a primeira "ABA" do arquivo Excel, uma vez que esse arquivo Excel que estou convertendo tem 4 abas no total.

Como faço para acessar e converter todas essas "abas" ?

Estou usando o 

"https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.14.0/xlsx.full.min.js"  para conversão.

 

Segue meu código abaixo:

 

Obrigado !!!

 

function ajax(config) {
 
const xhr = new XMLHttpRequest()
xhr.open(config.metodo, config.url, true)
xhr.responseType = "arraybuffer"
 
xhr.onload = function(e) {
if(xhr.status === 200) {
config.sucesso(xhr.response)
} else if(xhr.status >= 400) {
config.erro(xhr.statusText)
}
}
xhr.send()
}

 

ajax({
url: "teste.xlsx",
metodo: "GET",
sucesso(resposta) {
 
const arraybuffer = resposta
 
const data = new Uint8Array(arraybuffer)
const arr = []
 
for(let i = 0; i !=data.length; i++) {
arr[i] = String.fromCharCode(data[i])
}
 
let bstr = arr.join("")
const workbook = XLSX.read(bstr, { type:"binary" })

 

const first_sheet_name = workbook.SheetNames[0]
 
const worksheet = workbook.Sheets[first_sheet_name]
var info = XLSX.utils.sheet_to_json(worksheet, { raw: true })
 
return info
 
},
erro(e) {
console.log(e)
}

 

})

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By guzulino
      Eu preciso criar um sistema de busca em tempo real vamos dizer assim, na realidade eu até consegui achar boa parte dele.
      <form onsubmit="return false;"> <input id="campo_cpu" type="text" name="nome_cpu" placeholder="Modelo do processador"> </form> <script src="auto-complete.js"></script> <script> var demo1 = new autoComplete({ selector: '#campo_cpu', minChars: 1, source: function(term, suggest){ term = term.toLowerCase(); var choices = ['ActionScript', 'AppleScript', 'Asp', 'Assembly', 'BASIC', 'Batch', 'C', 'C++', 'CSS', 'Clojure', 'COBOL', 'ColdFusion', 'Erlang', 'Fortran', 'Groovy', 'Haskell', 'HTML', 'Java', 'JavaScript', 'Lisp', 'Perl', 'PHP', 'PowerShell', 'Python', 'Ruby', 'Scala', 'Scheme', 'SQL', 'TeX', 'XML']; var suggestions = []; for (i=0;i<choices.length;i++) if (~choices[i].toLowerCase().indexOf(term)) suggestions.push(choices[i]); suggest(suggestions); } }); </script> Eu consegui esse código e ele funciona tranquilamente, mas isso é só um teste, o usuário vai digitar o que ele precisa e no banco de dados eu mais de 5000 registros, então eu preciso que seja feita uma consulta no banco de dados para que ele mostre o que tem lá, acho que colocar 5000 numa string é um #@?&#036;%~ trampo além de eu achar que vai dar caquinha, o problema é que eu não faço a mínima ideia de como fazer isso, eu acho que é tipo uma consulta no banco a cada caractére digitado mostrando somente os resultados compatíveis, mas como disse antes não tenho ideia, se alguém agradeço desde já. Valeu
    • By tiagosoliver
      Boa noite galera,
       
      Estou precisando a partir de um json serializado, criar um menu dinâmico, pelo javascript. O json e a estrutura do menu eu coloquei na imagem em anexo. Obrigado desde já.

    • By asacap1000
      Galera estou com uma dúvida, tenho a parte de envio de dados para em Post, com encode json e curl. Já pesquisei em todos os lugares e não encontrei nada pra clarear as idéias.
       
      a parte final é essa do envio (cliente)
      header("Content-Type: ".$mediaType); $headers = array(); $headers[] = "Accept: ".$mediaType; $headers[] = "Accept-Charset: ".$charSet; $headers[] = "Accept-Encoding: ".$mediaType; $headers[] = "Content-Type: ".$mediaType.";charset=".$charSet; $headers[] = "Authorization: Basic ".$AuthorizationHeaderBase64; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS,"contatos=$contatos"); #campos que serão enviados curl_setopt($ch, CURLOPT_USERPWD, $AuthorizationHeaderBase64); curl_setopt($ch, CURLOPT_HEADER, $headers); curl_setopt($ch, CURLINFO_HTTP_CODE, true); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);#ativa se for ter retorno do chamada $result = curl_exec($ch); $result2 = json_decode($result,true); curl_close($ch); if($result2 === false) { $err = 'Curl error: ' . curl_error($ch); $result2 = $err; echo "This is text".$err; } var_dump ($result2);  
      Preciso de ajuda para entender como deve ser feito a página que será chamada, no caso lado servidor.
       
      Como pode ver tenho um header configurado e será enviado com chave de autorização agora como isso é feito do lado servidor??
       
      Se alguém puder me ajudar, preciso entregar este webservice sexta feira 18/10. Todos os dados recebidos serão salvos no BD Oracle.
       
       
    • By Eli Lopes
      O código em JS abaixo alimenta o combobox "programas" (html <select id="programas">) com uma lista em Json (lista-regiao-programas.json) de acordo com a escolha no combo "regioes" (html <select id="regioes">).
       
      Mas como eu faço para alimentar o combobox "municípios" (html <select id="municipios">) baseado no combo em "regiões" com a lista Json "combox-municipios.json" ?
       
      esolhe 1 programa -> alimenta regiões -> escolhe 1 região -> alimenta "município" (3 select dropdwon em cascata / aninhados)...
       
      HTML ->
      <div class="form-group"> <!-- dropdown Regiões --> <label for="regioes">Região de integração</label> <select id="regioes"> <option value=""></option> </select> </div> <div class="form-group"> <!-- dropdown Programas --> <label for="programas">Programa desenvolvido</label> <select id="programas"></select> </div> JS JSON ->
      $(document).ready(function(){ $.getJSON('SIGPLAM2/javaScript/lista-regiao-programas.json', function(data){ var items = []; var options = '<option value="">escolha uma região</option>'; $.each(data, function(key, val){ options += '<option value="' + val.nome + '">' + val.nome + '</option>'; }); $("#regioes").html(options); $("#regioes").change(function(){ var options_programas = ''; var str = ""; $("#regioes option:selected").each(function(){ str += $(this).text(); }); $.each(data, function(key, val){ if(val.nome == str){ $.each(val.cidades, function(key_city, val_city){ options_programas += '<option value="' + val_city + '">' + val_city + '</option>'; }); } }); $("#programas").html(options_programas); }).change(); }); });  
    • By Rengavitp
      Boa tarde pessoal, sou novo ainda em java e estou com a seguinte dificuldade, preciso imprimir um pedido de venda que vem de um sistema no formato json, ja tentei de diversas formas mas nenhuma deu certo, alguem pode me ajudar? Vou colocar abaixo o arquivo json e o metodo mais recente que testei, porem ele só mostra null, sei que o problema deve estar na forma de percorrer o json, mas nao faço ideia de como fazer.
       
      { "retorno":{ "pedidos":[ { "pedido":{ "desconto":"15,00", "observacoes":"Testando o campo observações do pedido", "observacaointerna":"Testando o campo observações internas do pedido", "data":"2017-07-28", "numero":"1", "numeroPedidoLoja":"100000001", "vendedor":"João da Silva", "valorfrete":"22.50", "totalprodutos":"139.98", "totalvenda":"147.48", "situacao":"Em Aberto", "loja": "123456789", "dataPrevista":"2017-07-28", "tipoIntegracao":"Magento", "cliente":{ "nome":"Organisys Software", "cnpj":"00.000.000/0000-1", "ie":"0000000000", "rg":"162788484", "endereco":"Rua Visconde de São Gabriel", "numero":"000", "complemento":"Sala 000", "cidade":"Bento Gonçalves", "bairro":"Cidade Alta", "cep":"95.700-000", "uf":"RS", "email":"teste@organisys.com.br", "celular":"", "fone":"(54) 2222-22222" }, "itens":[ { "item":{ "codigo":1234, "descricao":"Mochila", "quantidade":"2.0000", "valorunidade":"69.990000000", "precocusto":null, "descontoItem":"0.00", "un":"Pç", "pesoBruto": "0.520", "largura": "20", "altura": "18", "profundidade": "15", "unidadeMedida": "cm", "descricaoDetalhada": "Ecobag esportiva" } } ], "parcelas":[ { "parcela":{ "valor":"73.74", "dataVencimento":"2017-07-28 00:00:00", "obs":"Teste obs 1", "forma_pagamento":{ "id":"1", "descricao":"Dinheiro", "codigoFiscal":"1" } } }, { "parcela":{ "valor":"73.74", "dataVencimento":"2017-08-28 00:00:00", "obs":"Teste obs 2", "forma_pagamento":{ "id":"1", "descricao":"Dinheiro", "codigoFiscal":"1" } } } ], "nota":{ "serie":"1", "numero":"012346", "dataEmissao":"2017-08-28 00:00:00", "situacao":"1", "chaveAcesso":"43140401056417000139550010000123461496923524", "valorNota": "147.48" }, "transporte":{ "transportadora":"Transportadora", "cnpj":"00.000.000/0000-1", "tipo_frete":"R", "volumes":[ { "volume":{ "idServico":"1231293", "servico":"SEDEX 10", "codigoRastreamento":"SX052413651BR", "dataSaida":"2017-07-28", "prazoEntregaPrevisto":"1", "valorFretePrevisto":"11.25", "valorDeclarado": "0.00", "remessa":{ "numero":"12345AAA", "dataCriacao":"2017-10-17" }, "dimensoes":{ "peso":"1.553", "altura":"20", "largura":"15", "comprimento":"20", "diametro":"0" } } }, { "volume":{ "idServico":"1231293", "servico":"SEDEX 10", "codigoRastreamento":"SX052413651BR", "dataSaida":"2017-07-28", "prazoEntregaPrevisto":"1", "valorFretePrevisto":"11.25", "remessa":null, "dimensoes":{ "peso":"1.553", "altura":"20", "largura":"15", "comprimento":"20", "diametro":"0" } } } ], "enderecoEntrega":{ "nome":"Organisys Software Entrega", "endereco":"Rua Assis Brasil", "numero":"222", "complemento":"", "cidade":"Bento Gonçalves", "bairro":"Centro", "cep":"95.700-000", "uf":"RS" } } } } ] } } package javaapplication2; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import org.json.simple.JSONObject; import org.json.simple.parser.JSONParser; import org.json.simple.parser.ParseException; public class JSONRead { public static void main(String[] args) { JSONObject jsonObject; //Cria o parse de tratamento JSONParser parser = new JSONParser(); //Variaveis que irao armazenar os dados do arquivo JSON String nome; String sobrenome; String estado; String pais; try { //Salva no objeto JSONObject o que o parse tratou do arquivo jsonObject = (JSONObject) parser.parse(new FileReader( "//users/vagnermocelin/teste.json")); //Salva nas variaveis os dados retirados do arquivo numero = (String) jsonObject.get("numero"); vendedor = (String) jsonObject.get("vendedor"); total_produtos = (String) jsonObject.get("total_produtos"); total_venda = (String) jsonObject.get("total_venda"); System.out.printf( "Numero: %s\nVendedor: %s\nProdutos: %s\nVenda: %s\n", numero, vendedor, total_produtos, total_venda); } //Trata as exceptions que podem ser lançadas no decorrer do processo catch (FileNotFoundException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }  
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.