Una pregunta simple aquí: tengo el siguiente subconjunto de mis datos en Javascript. Mi aplicación funciona, pero necesito una forma sencilla de traer una versión ampliada de esos mismos datos, pero tomados de un archivo de Excel en lugar de ingresarlos manualmente en este script. ¿Cuál es la solución más simple y fácil para hacerlo con unos pocos pasos intermedios?
const countryData={ australia: { countryName: "France", fsnNarrative: "aus fsn lorem ipsum dolor sit amet", otherNarrative: "lorem ipsum dolor", marketLink: "http://www.google.com", center: [65, 34], zoom:4 }, france: { countryName: "France", fsnNarrative: "bgd fsn lorem ipsum dolor sit amet", otherNarrative: "lorem ipsum dolor", marketLink: "http://www.youtube.com", center: [90, 24], zoom: 5 } }
Traté de convertirlo desde un JSON, pero también tuve problemas a) convertir Excel a JSON yb) asignar JSON local externo a una constante (tratando de seguir esta guía pero no estoy claro. También uso R, en caso de que alguien tenga una solución con eso.
Óptimamente, podría simplemente vincular desde Javascript a un JSON externo o algún otro tipo de archivo, como este. const data = (path to some URL)
Trabajando solo con Javascript, HTML y CSS por ahora.
Uso la biblioteca SheetJS para procesar y exportar datos XLS. Por favor revise el fragmento a continuación
var json_data; (async() => { // fetch xls file const url = "https://www.lucasroquilly.com/stack_overflow_samples/workbook.xls"; // store data const data = await (await fetch(url)).arrayBuffer(); // convert to workbook const workbook = XLSX.read(data); //get first sheet const worksheet = workbook.Sheets[workbook.SheetNames[0]] //convert sheet to json json_data = XLSX.utils.sheet_to_json(worksheet); })();
<script src="https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.17.5/xlsx.min.js"></script> <button onclick="console.log(json_data)">Log json</button>