Wie kann ich pass den lokalen Excel-Datei Daten in Javascript-array (für die google-charts)?
Ich habe ein einfaches problem, aber ich kann nicht finden, eine einfache Lösung:
Ich habe eine Excel-Datei (immer die gleiche) mit mehreren Arbeitsblättern, die nicht-IT-Mitarbeiter möchten in der Lage sein zu aktualisieren, so dass es auch die updates der Google Charts (oder anderen chart-API können Sie mir raten) Webseite.
(By the way, ich brauche nur einen bestimmten Teil der einzelnen Arbeitsblätter, so dass, wenn Sie wissen, einen Weg zu extrahieren, nur das, was ich brauche, das wäre toll 🙂 )
Ich würde gerne vermeiden, dass server-side-Betrieb, aber es ist vielleicht nicht möglich, da ich möchte, das Lesen einer lokalen Datei.
Ich sah Sie an Möglichkeiten, um zu konvertieren, JSON, oder laden als base64-string, mit xlsx.js aber ich finde einfach nichts, dass meine Kollegen konnten problemlos nutzen.
Danke Ihnen sehr.
Bearbeiten
Ich einen Weg gefunden, genau das zu tun, was ich wollte, also, wenn es kann jemand helfen:
Zuerst lege ich alle Daten die ich brauchte in eine csv-Datei.
Dann verwendete ich die HTML5-FileAPI zum Lesen der csv-Datei, die ich geladen habe mit einem Datei-Eingang.
Schließlich habe ich eine cvstojson Skript zum Parsen der Datei dann übergeben Sie es an th google Diagramm-Datentabelle, wie ich wollte.
Aber dieser laden darf die Daten nur einmal so habe ich ein button-Stil-label für die Datei-Eingabe ausgelöst hat, eine verborgene Taste "reset" (eigentlich Klonen mehr als zurücksetzen) nachdem die Datei geladen wurde, so dass es jetzt aussieht wie eine einzelne Schaltfläche, die ermöglicht, um die Datei zu laden, die mehrere Male, nachdem ich die Daten geändert.
Ich habe auch die jQuery localStorage zum Auffüllen meiner json.
Ich weiß, das ist ziemlich chaotisch, so dass hier ein code-Auszug:
<div id="load">
<button id="clear">Clear</button>
<label id="forcvs" for="cvs" > Load data </label>
<input type="file" id="cvs" onchange="handleFiles(this.files);" accept=".csv"><br/>
</div>
"HandleFiles" fonction führt zu der cvstojson Skript:
var json = JSON.parse(localStorage.getItem('json'))
function handleFiles(files) {
//Check for the various File API support.
if (window.FileReader) {
//FileReader are supported.
getAsText(files[0]);
} else {
alert('FileReader are not supported in this browser.');
}
}
function getAsText(fileToRead) {
var reader = new FileReader();
//Read file into memory as UTF-8
reader.readAsText(fileToRead);
//Handle errors load
reader.onload = loadHandler;
reader.onerror = errorHandler;
}
function loadHandler(event) {
var csv = event.target.result;
processData(csv);
}
function processData(csv) {
object = $.csv.toObjects(csv, {separator:";"})
drawOutput(object);
}
function errorHandler(evt) {
if(evt.target.error.name == "NotReadableError") {
alert("Canno't read file !");
}
}
function drawOutput(object){
json = object
localStorage.setItem('json', JSON.stringify(json))
drawChart()
$( "#clear" ).trigger( "click" );
}
und dann vor dem Update meine Daten und Zeichnung meiner Karte die ich verwendet habe:
json = JSON.parse(localStorage.getItem('json'))
Hier ist ein Auszug aus dem jquery habe ich verwendet:
var load = $('#cvs')
$('#clear').click(function () {
load.replaceWith(load = load.clone(true))
})
Und CSS:
#cvs, #clear {
display: none;
}
#forcvs {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;
line-height: 16px;
padding: .2em .4em;
margin: .2em;
}
Hoffe, es kann einigen helfen einem und vielen Dank für die Antworten 🙂
shancarter.github.io/mr-Daten-Konverter
Wenn die Daten in Ihren Tabellen nicht sensiblen, vertraulichen oder anderweitig privilegierten, das hochladen der Tabellenkalkulation in Google Docs können Sie mithilfe der integrierten Unterstützung für die Visualisierungs-API-Abfragen. Dies ist der einfachste Weg, um Daten aus einer Excel-Tabelle in die Visualisierung der API-charts. Wenn das nicht eine option, können Sie spin up einen lokalen webserver (wie [WAMP](www.wampserver.com), wenn Sie in Windows) exportieren Sie die Excel-Datei, CSV-Format, laden Sie die CSV via ajax vom webserver, und Parsen der CSV-Daten in eine DataTable.
In der Tat, habe ich das CVS-Lösung, da ich die vertraulichen Daten. Jedoch, ich haben so exportieren Sie jedes Arbeitsblatt auf eine separate CVS-Datei. Es funktioniert trotzdem, vielen Dank für Eure schnellen Antworten!
Wenn Sie die Daten in ein Google Drive spreadsheet (Sie re-branded Google Docs eine Weile zurück, by the way), gibt es eine API für das, was Sie können, um eine sichere Verbindung um Zugriff auf die sensiblen Daten. Wäre es nicht eine einfache Aufgabe mit allen Mitteln, aber ein Benutzer weitergeleitet werden könnten, auf eine login-Seite und nach der Anmeldung zurückgeschickt werden, um Ihre Website mit Zugriff auf Daten in google drive. Ich habe dies in einem ASP.Net Website zu verbinden, um ein vorhandenes spreadsheet-tool hatte jemand erstellt eine import Daten in meine web-app. Sollte machbar sein von javascript. developers.google.com/drive
InformationsquelleAutor CyrilFind | 2014-07-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Können Sie versuchen, Alasql JavaScript-Bibliothek zum laden von XLSX-Daten in JavaScript-array ohne komplexe Programmierung. Alasql verwendet XLSX.js Bibliothek für die Arbeit mit Excel-Dateien.
Dies ist ein Beispiel:
Können Sie laufen dieses Beispiel an alasql.org Website.
Durch Standard-Header-option false ist, sheetid ist "Tabelle1", Bereich - alle Zellen auf dem Blatt.
Alasql auch unterstützt TXT, TAB, CSV, JSON, XLS Formate. Sie können auch produziert XLSX-Datei zurück
aus JavaScript-array:
InformationsquelleAutor agershun
Können Sie Lesen, system excel-Datei ohne Upload mit sheet.js
});
Weitere Hilfe können Sie hier erhalten:
http://onegibi.com/programming/javascript-jquery-read-system-excel-file-without-uploading/
InformationsquelleAutor Amit Kumar