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 !!!
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