Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Frage] Excel nach json

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Frage] Excel nach json

    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      Linedancer last edited by

      Hallo Gemeinde,

      ich möchte eine Excel Tabelle (csv) als json haben um sie in vis darzustellen.

      ich habe folgendes gefunden:

      ! ````
      var csv2json = require('csv2json');
      var fs = require('fs');

      fs.createReadStream('data.csv')
      .pipe(csv2json({
      // Defaults to comma.
      separator: ';'
      }))
      .pipe(fs.createWriteStream('data.json'));

      was auch funktioniert und eine Datei erzeugt.
      
      Als JavaScript Unwissender suche ich jetzt noch den Weg das Ergebnis in einen Datenpunkt zu bringen.
      
      ach ja das csv2jason Modul hab ich in der Javascript Instanz natürlich eingetragen.
      1 Reply Last reply Reply Quote 0
      • paul53
        paul53 last edited by

        Du möchtest doch eine Datei lesen. Versuche es mal so (nicht getestet):

        const csvjson = require('csvjson');
        const fs = require('fs');
        const fn = 'Pfad zur Datei/data.csv';
        const idJson = '...'; // Datenpunkt-ID für Vis
        
        fs.readFile(fn, (err, data) => {
          if (err) throw err;
          var json = csvjson.toObject(data, {delimiter : ';'});
          log(json);
          setState(idJson, json, true);
        });
        

        Das NPM-Modul https://www.npmjs.com/package/csvjson muss in der JS-Instanz installiert sein.

        Horst Böttcher 1 Reply Last reply Reply Quote 0
        • Horst Böttcher
          Horst Böttcher @paul53 last edited by Horst Böttcher

          @paul53 Allo erst mal ich bin Anfänger habe es unter Java Script eingeben aber ich komme nur fehler

          paul53 1 Reply Last reply Reply Quote 0
          • paul53
            paul53 @Horst Böttcher last edited by paul53

            @Horst-Böttcher sagte:

            komme nur fehler

            Versuche es mal damit:

            const csvjson = require('csvjson');
            const idJson = 'Datenpunkt-ID für Vis-Tabelle';
            const url = 'https://www.berlin.de/lageso/_assets/gesundheit/publikationen/corona/bezirkstabelle.csv';
            
            request(url, function(err, resp, data) {
                if(err) log(err, 'warn');
                else {
                    let json = JSON.stringify(csvjson.toObject(data, {delimiter : ';'}));
                    setState(idJson, json, true);
                }
            });
            

            In der Konfiguration des Javascript-Instanz muss csvjson als zusätzliches NPM-Modul eingetragen werden

            Horst Böttcher 1 Reply Last reply Reply Quote 0
            • Horst Böttcher
              Horst Böttcher @paul53 last edited by

              @paul53 sagte in Frage] Excel nach json:

              In der Konfiguration des Javascript-Instanz muss csvjson als zusätzliches NPM-Modul eingetragen werden

              wo muss das rein und wie

              paul53 1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Horst Böttcher last edited by

                @Horst-Böttcher sagte:

                wo muss das rein und wie

                Einfach eingeben.

                JS_Temp.JPG

                Horst Böttcher 1 Reply Last reply Reply Quote 0
                • Horst Böttcher
                  Horst Böttcher @paul53 last edited by Horst Böttcher

                  @paul53 ok hab ich gemacht

                  3.11.2020, 19:52:17.005	[info ]: javascript.0 (7715) Stop script script.js.text
                  3.11.2020, 19:52:18.967	[info ]: javascript.0 (7715) Start javascript script.js.text
                  3.11.2020, 19:52:18.976	[info ]: javascript.0 (7715) script.js.text: registered 0 subscriptions and 0 schedules
                  

                  bekomme nur keine daten

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Horst Böttcher last edited by

                    @Horst-Böttcher sagte in Frage] Excel nach json:

                    bekomme nur keine daten

                    Die Daten werden als JSON in einen Datenpunkt geschrieben. Wenn sie im Log zu sehen sein sollen, muss ergänzt werden:

                            log(json);
                    
                    Horst Böttcher 1 Reply Last reply Reply Quote 0
                    • Horst Böttcher
                      Horst Böttcher @paul53 last edited by Horst Böttcher

                      @paul53 ok jetzt ging es

                      nur gibt es ein UTF-8 Problem denn die Sonderzeichen sehen komisch aus
                      und wie kann man einstellen das es immer um 0:00 Uhr und 12:00 Uhr ausgelesen wird

                      [{"\"Bezirk\"":"Charlottenburg-Wilmersdorf","\"Fallzahl\"":"3155","\"Differenz\"":"134","\"Inzidenz\"":" 918,2","\"Genesen\"":"2056"},{"\"Bezirk\"":"Friedrichshain-Kreuzberg","\"Fallzahl\"":"3602","\"Differenz\"":"140","\"Inzidenz\"":"1240,4","\"Genesen\"":"2305"},{"\"Bezirk\"":"Lichtenberg","\"Fallzahl\"":"1722","\"Differenz\"":"86","\"Inzidenz\"":" 585,3","\"Genesen\"":"1099"},{"\"Bezirk\"":"Marzahn-Hellersdorf","\"Fallzahl\"":"1376","\"Differenz\"":"76","\"Inzidenz\"":" 509,7","\"Genesen\"":"994"},{"\"Bezirk\"":"Mitte","\"Fallzahl\"":"5247","\"Differenz\"":"195","\"Inzidenz\"":"1360,2","\"Genesen\"":"3373"},{"\"Bezirk\"":"Neuk�lln","\"Fallzahl\"":"5216","\"Differenz\"":"205","\"Inzidenz\"":"1581,0","\"Genesen\"":"3353"},{"\"Bezirk\"":"Pankow","\"Fallzahl\"":"2681","\"Differenz\"":"132","\"Inzidenz\"":" 655,0","\"Genesen\"":"1848"},{"\"Bezirk\"":"Reinickendorf","\"Fallzahl\"":"2592","\"Differenz\"":"90","\"Inzidenz\"":" 972,9","\"Genesen\"":"1722"},{"\"Bezirk\"":"Spandau","\"Fallzahl\"":"2045","\"Differenz\"":"166","\"Inzidenz\"":" 834,0","\"Genesen\"":"1309"},{"\"Bezirk\"":"Steglitz-Zehlendorf","\"Fallzahl\"":"2242","\"Differenz\"":"78","\"Inzidenz\"":" 723,1","\"Genesen\"":"1092"},{"\"Bezirk\"":"Tempelhof-Sch�neberg","\"Fallzahl\"":"3585","\"Differenz\"":"136","\"Inzidenz\"":"1021,4","\"Genesen\"":"1915"},{"\"Bezirk\"":"Treptow-K�penick","\"Fallzahl\"":"1355","\"Differenz\"":"75","\"Inzidenz\"":" 495,1","\"Genesen\"":"784"},{"\"Bezirk\"":"Berlin","\"Fallzahl\"":"34818","\"Differenz\"":"1513","\"Inzidenz\"":" 923,7","\"Genesen\"":"21850"}]
                      
                      Horst Böttcher paul53 OliverIO 4 Replies Last reply Reply Quote 0
                      • Horst Böttcher
                        Horst Böttcher @Horst Böttcher last edited by

                        Hat wer da eine Lösung

                        1 Reply Last reply Reply Quote 0
                        • paul53
                          paul53 @Horst Böttcher last edited by paul53

                          @Horst-Böttcher:

                          wie kann man einstellen das es immer um 0:00 Uhr und 12:00 Uhr ausgelesen wird

                          const csvjson = require('csvjson');
                          const idJson = 'Datenpunkt-ID für Vis-Tabelle';
                          const url = 'https://www.berlin.de/lageso/_assets/gesundheit/publikationen/corona/bezirkstabelle.csv';
                           
                          schedule('0 0,12 * * *', function() {
                            request(url, function(err, resp, data) {
                              if(err) log(err, 'warn');
                              else {
                                  let json = JSON.stringify(csvjson.toObject(data, {delimiter : ';'}));
                                  setState(idJson, json, true);
                              }
                            });
                          });
                          
                          1 Reply Last reply Reply Quote 0
                          • OliverIO
                            OliverIO @Horst Böttcher last edited by

                            @Horst-Böttcher sagte in Frage] Excel nach json:

                            UTF-8 Problem

                            Beim einlesen kannst du ein encoding angeben. Dazu musst du herausfinden wie die excel kodiert wurde. Wenn es Windows ist könntest du es mal mit ISO-8859-1 probieren

                            Horst Böttcher 1 Reply Last reply Reply Quote 0
                            • Horst Böttcher
                              Horst Böttcher @OliverIO last edited by

                              @OliverIO sagte in Frage] Excel nach json:

                              ISO-8859-1

                              es währe net wenn sie mir sagen könnten wie man das dort einträgt

                              OliverIO 1 Reply Last reply Reply Quote 0
                              • OliverIO
                                OliverIO @Horst Böttcher last edited by

                                @Horst-Böttcher

                                ich habe mal das beispiel von oben kopiert. es muss nur wenig geändert werden.

                                const csvjson = require('csvjson');
                                const idJson = 'Datenpunkt-ID für Vis-Tabelle';
                                const url = 'https://www.berlin.de/lageso/_assets/gesundheit/publikationen/corona/bezirkstabelle.csv';
                                 
                                request({
                                  url:url,
                                  encoding:'ISO-8859-1'
                                  }, function(err, resp, data) {
                                    if(err) log(err, 'warn');
                                    else {
                                        let json = JSON.stringify(csvjson.toObject(data, {delimiter : ';'}));
                                        setState(idJson, json, true);
                                    }
                                });
                                
                                F 1 Reply Last reply Reply Quote 0
                                • F
                                  fastfoot @OliverIO last edited by

                                  @OliverIO sagte in Frage] Excel nach json:

                                  encoding:'ISO-8859-1'

                                  das mag der JS Adapter gar nicht und beendet sich 😞 Ich hatte mich diese Woche daran versucht und bin kläglich gescheitert

                                  OliverIO 1 Reply Last reply Reply Quote 0
                                  • OliverIO
                                    OliverIO @fastfoot last edited by

                                    @fastfoot
                                    Ohne eine Fehlermeldung?
                                    Was heißt beendet. Absturz?

                                    F 1 Reply Last reply Reply Quote 0
                                    • F
                                      fastfoot @OliverIO last edited by

                                      @OliverIO sagte in Frage] Excel nach json:

                                      @fastfoot
                                      Ohne eine Fehlermeldung?
                                      Was heißt beendet. Absturz?

                                      ja, crash. Dasselbe mit ansi und was mir sonst noch einfiel.

                                      javascript.1	2020-11-06 23:48:11.901	error	(27805) TypeError [ERR_UNKNOWN_ENCODING]: Unknown encoding: ISO-8859-1
                                      javascript.1	2020-11-06 23:48:11.901	error	(27805) Error: Unknown encoding: ISO-8859-1
                                      javascript.1	2020-11-06 23:48:11.900	error	(27805) An error happened which is most likely from one of your scripts, but the originating script could not be detected.
                                      
                                      OliverIO 1 Reply Last reply Reply Quote 0
                                      • OliverIO
                                        OliverIO @fastfoot last edited by

                                        @fastfoot
                                        Dann Probier mal den folgenden String
                                        iso88591

                                        Wenn das auch nicht geht, wirst du die Daten vorher nochmal durch iconv jagen müssen.

                                        https://blog.theodo.com/2017/04/csv-excel-escape-from-the-encoding-hell-in-nodejs/

                                        F 1 Reply Last reply Reply Quote 1
                                        • F
                                          fastfoot @OliverIO last edited by

                                          @OliverIO sagte in Frage] Excel nach json:

                                          @fastfoot
                                          Dann Probier mal den folgenden String
                                          iso88591

                                          Wenn das auch nicht geht, wirst du die Daten vorher nochmal durch iconv jagen müssen.

                                          https://blog.theodo.com/2017/04/csv-excel-escape-from-the-encoding-hell-in-nodejs/

                                          Danke dir sehr, auch wenn ich nicht der TE bin. Das hatte mich doch interessiert und hat mich frustriert zurückgelassen, dass ich die Lösung nicht selbst finden konnte. Mit deiner Lösung klappt es jetzt. Ginge nicht auch so etwas wie charset = xxxx ? Ich kenne mich mit Request-Headern leider gar nicht aus

                                          const csvjson = require('csvjson');
                                          const iconv = require('iconv-lite');
                                          const idJson = '0_userdata.0.json';
                                          const url = 'https://www.berlin.de/lageso/_assets/gesundheit/publikationen/corona/bezirkstabelle.csv';
                                           
                                          request({
                                            url:url,
                                            encoding:'binary'
                                            }, function(err, resp, data) {
                                              if(err) log(err, 'warn');
                                              else {
                                                  data = iconv.decode(data, 'iso88591');
                                                  let json = JSON.stringify(csvjson.toObject(data, {delimiter : ';'}));
                                                  setState(idJson, json, true);
                                                  log(json);
                                              }
                                          });
                                          
                                          
                                          1 Reply Last reply Reply Quote 0
                                          • paul53
                                            paul53 @Horst Böttcher last edited by

                                            @Horst-Böttcher:

                                            die Sonderzeichen sehen komisch aus

                                            Man kann sie austauschen, da alle für ein "ö" stehen.

                                                    setState(idJson, json.replace(/�/g, 'ö'), true);
                                            
                                            Horst Böttcher 1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            906
                                            Online

                                            31.8k
                                            Users

                                            80.0k
                                            Topics

                                            1.3m
                                            Posts

                                            5
                                            21
                                            1212
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo