Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    712

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

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

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

Scheduled Pinned Locked Moved JavaScript
8 Posts 2 Posters 504 Views 2 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Online
    P Online
    ps1304
    wrote on last edited by 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 Reply Last reply
    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
      wrote on last edited by 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 Reply Last reply
      0
      • P Online
        P Online
        ps1304
        wrote on last edited by
        #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 Reply Last reply
        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
          wrote on last edited by
          #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 Reply Last reply
          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 Online
            P Online
            ps1304
            wrote on last edited by
            #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 Reply Last reply
            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
              wrote on last edited by 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 Reply Last reply
              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 Online
                P Online
                ps1304
                wrote on last edited by
                #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 Reply Last reply
                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
                  wrote on last edited by 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 Reply Last reply
                  1

                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                  With your input, this post could be even better 💗

                  Register Login
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  Support us

                  ioBroker
                  Community Adapters
                  Donate

                  509

                  Online

                  32.7k

                  Users

                  82.6k

                  Topics

                  1.3m

                  Posts
                  Community
                  Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                  ioBroker Community 2014-2025
                  logo
                  • Login

                  • Don't have an account? Register

                  • Login or register to search.
                  • First post
                    Last post
                  0
                  • Home
                  • Recent
                  • Tags
                  • Unread 0
                  • Categories
                  • Unreplied
                  • Popular
                  • GitHub
                  • Docu
                  • Hilfe