Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. [Gelöst]-Ergebnis einer Excel Abfrage auf Zahl reduzieren

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    2.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    949

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.2k

[Gelöst]-Ergebnis einer Excel Abfrage auf Zahl reduzieren

Geplant Angeheftet Gesperrt Verschoben JavaScript
8 Beiträge 2 Kommentatoren 485 Aufrufe 2 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • P Offline
    P Offline
    ps1304
    schrieb am zuletzt editiert von ps1304
    #1

    Hallo zusammen, habe es geschafft den Wert einer Zelle in einem Excel File abzufragen:

    const ExcelJS = require('exceljs');
    
    var workbook = new ExcelJS.Workbook();
    
    workbook.xlsx.readFile('/iobroker/iobroker.xlsx').then(function() {
    
    var worksheet = workbook.getWorksheet('Car');
    
    console.log (worksheet.getCell('A1').value);
    var euro = (worksheet.getCell('A1').value);
    
    log (worksheet.getCell(1,3).value);
    
    setState("0_userdata.0.Test.excel",euro)
    
    });
    

    Der Inhalt der Abfrage sieht so aus:
    {'formula':''[1]Monatliche Auswertung'!$J$35','result':101.79298182130769}

    Wie muß ich das Script umbauen/formatieren, damit nur die Zahl 101,79 in meinen Datenpunkt geschrieben wird?

    mickymM 1 Antwort Letzte Antwort
    0
    • P ps1304

      Hallo zusammen, habe es geschafft den Wert einer Zelle in einem Excel File abzufragen:

      const ExcelJS = require('exceljs');
      
      var workbook = new ExcelJS.Workbook();
      
      workbook.xlsx.readFile('/iobroker/iobroker.xlsx').then(function() {
      
      var worksheet = workbook.getWorksheet('Car');
      
      console.log (worksheet.getCell('A1').value);
      var euro = (worksheet.getCell('A1').value);
      
      log (worksheet.getCell(1,3).value);
      
      setState("0_userdata.0.Test.excel",euro)
      
      });
      

      Der Inhalt der Abfrage sieht so aus:
      {'formula':''[1]Monatliche Auswertung'!$J$35','result':101.79298182130769}

      Wie muß ich das Script umbauen/formatieren, damit nur die Zahl 101,79 in meinen Datenpunkt geschrieben wird?

      mickymM Offline
      mickymM Offline
      mickym
      Most Active
      schrieb am zuletzt editiert von mickym
      #2

      @ps1304 Ganz einfach

      var str='{"formula":"[1]Monatliche Auswertung!$J$35","result":101.79298182130769}';
      
      var result = JSON.parse(str).result;
      console.log(result);
      

      b094801d-ef0a-4287-93bf-0d1b1a4e839c-image.png

      Also Deine Zeile 14 einfach umschreiben.

      setState("0_userdata.0.Test.excel",JSON.parse(euro).result)
      

      Runden muss halt selbst.

      Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

      1 Antwort Letzte Antwort
      0
      • P Offline
        P Offline
        ps1304
        schrieb am zuletzt editiert von
        #3

        @mickym super danke für die schnelle Antwort - die Zahl ändert sich aber täglich. was geb ich dann an?
        Sprich der Inhalt ist das Ergebnis von: (worksheet.getCell('A1').value);
        Gruß Peter

        mickymM 1 Antwort Letzte Antwort
        0
        • P ps1304

          @mickym super danke für die schnelle Antwort - die Zahl ändert sich aber täglich. was geb ich dann an?
          Sprich der Inhalt ist das Ergebnis von: (worksheet.getCell('A1').value);
          Gruß Peter

          mickymM Offline
          mickymM Offline
          mickym
          Most Active
          schrieb am zuletzt editiert von
          #4

          @ps1304 Das macht doch nichts - du hast doch das in Deine Variable euro geschrieben. Ich habe Dir doch geschrieben

          setState("0_userdata.0.Test.excel",JSON.parse(euro).result)
          

          Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

          P 1 Antwort Letzte Antwort
          0
          • mickymM mickym

            @ps1304 Das macht doch nichts - du hast doch das in Deine Variable euro geschrieben. Ich habe Dir doch geschrieben

            setState("0_userdata.0.Test.excel",JSON.parse(euro).result)
            
            P Offline
            P Offline
            ps1304
            schrieb am zuletzt editiert von
            #5

            @mickym danke dir - da bekomme ich einen Fehler:

            script.js.Java-Instanz0.Excel-Datepunkt-auslesen-neu: SyntaxError: Unexpected token o in JSON at position 1

            mein Script sieht so aus:

            const ExcelJS = require('exceljs');
            var workbook = new ExcelJS.Workbook();
            
            function readExcelData() {
              workbook.xlsx.readFile('/iobroker/iobroker.xlsx').then(function() {
                var worksheet = workbook.getWorksheet('Car');
                console.log(worksheet.getCell('A1').value);
                var euro = worksheet.getCell('A1').value;
                setState("0_userdata.0.Test.excel",JSON.parse(euro).result) 
            });
            }
            
            // Scheduler einrichten, um die Funktion readExcelData alle 1 Minuten auszuführen
            setInterval(readExcelData, 1 * 60 * 1000);
            
            mickymM 1 Antwort Letzte Antwort
            0
            • P ps1304

              @mickym danke dir - da bekomme ich einen Fehler:

              script.js.Java-Instanz0.Excel-Datepunkt-auslesen-neu: SyntaxError: Unexpected token o in JSON at position 1

              mein Script sieht so aus:

              const ExcelJS = require('exceljs');
              var workbook = new ExcelJS.Workbook();
              
              function readExcelData() {
                workbook.xlsx.readFile('/iobroker/iobroker.xlsx').then(function() {
                  var worksheet = workbook.getWorksheet('Car');
                  console.log(worksheet.getCell('A1').value);
                  var euro = worksheet.getCell('A1').value;
                  setState("0_userdata.0.Test.excel",JSON.parse(euro).result) 
              });
              }
              
              // Scheduler einrichten, um die Funktion readExcelData alle 1 Minuten auszuführen
              setInterval(readExcelData, 1 * 60 * 1000);
              
              mickymM Offline
              mickymM Offline
              mickym
              Most Active
              schrieb am zuletzt editiert von mickym
              #6

              @ps1304 vielleicht ist das Ganze bereits ein Objekt, dann kannst du direkt darauf zugreifen,

              
              setState("0_userdata.0.Test.excel",euro.result)
              
              

              In Zeile 9.

              Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

              P 1 Antwort Letzte Antwort
              0
              • mickymM mickym

                @ps1304 vielleicht ist das Ganze bereits ein Objekt, dann kannst du direkt darauf zugreifen,

                
                setState("0_userdata.0.Test.excel",euro.result)
                
                

                In Zeile 9.

                P Offline
                P Offline
                ps1304
                schrieb am zuletzt editiert von
                #7

                @mickym danke - probier ich mal aus - habe etwas "gegooglet":

                const ExcelJS = require('exceljs');
                var workbook = new ExcelJS.Workbook();
                
                function readExcelData() {
                  workbook.xlsx.readFile('/iobroker/iobroker.xlsx').then(function() {
                    var worksheet = workbook.getWorksheet('Car');
                    console.log(worksheet.getCell('A1').value);
                    var euro = worksheet.getCell('A1').value;
                    setState("0_userdata.0.Test.excel",JSON.parse(JSON.stringify(euro)).result) 
                });
                }
                
                // Scheduler einrichten, um die Funktion readExcelData alle 1 Minuten auszuführen
                setInterval(readExcelData, 1 * 60 * 1000);
                

                das funktioniert auch - jetzt much ich nur noch runden !!!

                mickymM 1 Antwort Letzte Antwort
                0
                • P ps1304

                  @mickym danke - probier ich mal aus - habe etwas "gegooglet":

                  const ExcelJS = require('exceljs');
                  var workbook = new ExcelJS.Workbook();
                  
                  function readExcelData() {
                    workbook.xlsx.readFile('/iobroker/iobroker.xlsx').then(function() {
                      var worksheet = workbook.getWorksheet('Car');
                      console.log(worksheet.getCell('A1').value);
                      var euro = worksheet.getCell('A1').value;
                      setState("0_userdata.0.Test.excel",JSON.parse(JSON.stringify(euro)).result) 
                  });
                  }
                  
                  // Scheduler einrichten, um die Funktion readExcelData alle 1 Minuten auszuführen
                  setInterval(readExcelData, 1 * 60 * 1000);
                  

                  das funktioniert auch - jetzt much ich nur noch runden !!!

                  mickymM Offline
                  mickymM Offline
                  mickym
                  Most Active
                  schrieb am zuletzt editiert von mickym
                  #8

                  @ps1304 na das ist doppelt gemoppelt - das ist Unsinn.

                  
                   
                  setState("0_userdata.0.Test.excel",Math.round(euro.result * 100)/100)
                   
                  
                  

                  Jeder Flow bzw. jedes Script, das ich hier poste implementiert jeder auf eigene Gefahr. Flows und Scripts können Fehler aufweisen und weder der Seitenbetreiber noch ich persönlich können hierfür haftbar gemacht werden. Das gleiche gilt für Empfehlungen aller Art.

                  1 Antwort Letzte Antwort
                  1
                  Antworten
                  • In einem neuen Thema antworten
                  Anmelden zum Antworten
                  • Älteste zuerst
                  • Neuste zuerst
                  • Meiste Stimmen


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  665

                  Online

                  32.6k

                  Benutzer

                  82.2k

                  Themen

                  1.3m

                  Beiträge
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Anmelden

                  • Du hast noch kein Konto? Registrieren

                  • Anmelden oder registrieren, um zu suchen
                  • Erster Beitrag
                    Letzter Beitrag
                  0
                  • Home
                  • Aktuell
                  • Tags
                  • Ungelesen 0
                  • Kategorien
                  • Unreplied
                  • Beliebt
                  • GitHub
                  • Docu
                  • Hilfe