NEWS
[Gelöst]-Ergebnis einer Excel Abfrage auf Zahl reduzieren
-
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?
-
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?
@ps1304 Ganz einfach
var str='{"formula":"[1]Monatliche Auswertung!$J$35","result":101.79298182130769}'; var result = JSON.parse(str).result; console.log(result);
Also Deine Zeile 14 einfach umschreiben.
setState("0_userdata.0.Test.excel",JSON.parse(euro).result)Runden muss halt selbst.
-
@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 -
@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)@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); -
@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); -
@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.
@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 !!!
-
@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 !!!
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden