Initial commit

This commit is contained in:
Marcelo
2025-11-20 15:27:34 -06:00
commit cc72c9fc5d
3221 changed files with 737477 additions and 0 deletions

30
node_modules/node-red-contrib-xlsx-to-json/README.md generated vendored Normal file
View File

@@ -0,0 +1,30 @@
# node-red-contrib-xlsx-to-json
Castellano
Nodo para convertir en JSON un archivo xlsx, pudiendo seleccionar una pestaña o un rango específico del excel.
Los parámetros que necesita para funcionar son:
msg.filepath: La ruta donde se encuentra el archivo xlsx
msg.rangecell: Opcional. El rango de celdas que se leeran del excel. Ejemplo -> "A2:M6"
msg.columkey: Opcional. La cabecera para cada columna que se va a leer. Es un objeto. Ejemplo -> {"A":"Titulo","B":"Descripción"}
msg.sheet: El nombre de la hoja del libro que se van a leer. Ejemplo -> Hoja 1
--------------------------
English
Node to convert an xlsx file into JSON, being able to select a tab or a specific range of excel.
The parameters it needs to work are:
msg.filepath:The path where the xlsx file is located
msg.rangecell: Optional. The range of cells to be read from excel. Example -> "A2:M6"
msg.columkey: Optional. The header for each column to be read. Its an object. Example -> {"A":"Titulo","B":"Descripción"}
msg.sheet: The name of the book sheets to be read. Example -> Sheet 1

View File

@@ -0,0 +1,20 @@
{
"name": "node-red-contrib-xlsx-to-json",
"version": "1.0.0",
"description": "Node to convert an xlsx file into JSON, being able to select a tab or a specific range of excel.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Rageljimenez",
"license": "ISC",
"keywords": [ "node-red" ],
"node-red": {
"nodes": {
"xlsxtojson": "xlsx-to-json.js"
}
},
"dependencies": {
"convert-excel-to-json": "^1.7.0"
}
}

View File

@@ -0,0 +1,67 @@
<script type="text/javascript">
RED.nodes.registerType('XLSX-to-json',{
category: 'function',
color: '#0DC2B2',
defaults: {
name: {value: "xlsx to json"},
filepath: { value: ""},
rangecell: { value: ""},
columnkey: { value: ""},
sheet: { value: ""}
},
inputs:1,
outputs:1,
icon: "font-awesome/fa-file-excel-o",
label: function() {
return this.name||"XLSX-to-json";
}
});
</script>
<script type="text/html" data-template-name="XLSX-to-json">
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i>Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
<!-- Pedimos el path -->
<div class="form-row">
<label for="node-input-filepath"><i class="icon-tag"></i>Filepath</label>
<input type="text" id="node-input-filepath" placeholder="filename.xlsx">
</div>
<!-- Pedimos el rango -->
<div class="form-row">
<label for="node-input-rangecell"><i class="icon-tag"></i>Rangecell</label>
<input type="text" id="node-input-rangecell" placeholder="A1:C5">
</div>
<!-- Pedimos las cabeceras -->
<div class="form-row">
<label for="node-input-columnkey"><i class="icon-tag"></i>Columkey</label>
<input type="text" id="node-input-columnkey" placeholder='{"A":"Title", "B":"Description"}'>
</div>
<!-- Pedimos las hojas -->
<div class="form-row">
<label for="node-input-sheet"><i class="icon-tag"></i>Sheet</label>
<input type="text" id="node-input-sheet" placeholder="Sheet 1">
</div>
</script>
<script type="text/html" data-help-name="XLSX-to-json">
<p> <b> Castellano </b></p>
<p> Nodo para convertir en JSON un archivo xlsx, pudiendo seleccionar una pestaña o un rango específico del excel.</p>
<p> Los parámetros que necesita para funcionar son: </p>
<p><b>msg.filepath:</b> La ruta donde se encuentra el archivo xlsx</p>
<p><b>msg.rangecell:</b> Opcional. El rango de celdas que se leeran del excel. Ejemplo -> "A2:M6"</p>
<p><b>msg.columkey:</b> Opcional. La cabecera para cada columna que se va a leer. Es un objeto. Ejemplo -> {"A":"Titulo","B":"Descripción"}</p>
<p><b>msg.sheet:</b> El nombre de la hoja del libro que se van a leer. Ejemplo -> Hoja 1</p>
<p>--------------------------</p>
<p> <b> English </b></p>
<p> Node to convert an xlsx file into JSON, being able to select a tab or a specific range of excel.</p>
<p> The parameters it needs to work are: </p>
<p><b>msg.filepath:</b>The path where the xlsx file is located</p>
<p><b>msg.rangecell:</b> Optional. The range of cells to be read from excel. Example -> "A2:M6"</p>
<p><b>msg.columkey:</b> Optional. The header for each column to be read. Its an object. Example -> {"A":"Titulo","B":"Descripción"}</p>
<p><b>msg.sheet:</b> The name of the book sheets to be read. Example -> Sheet 1</p>
</script>

View File

@@ -0,0 +1,52 @@
module.exports = function(RED){
function convertxlsx(config){
RED.nodes.createNode(this,config);
//Los inputs
this.filepath = config.filepath;
this.rangecell = config.rangecell;
this.columnkey = config.columnkey;
this.sheet = config.sheet;
var node = this;
node.on('input', function(msg){
if(!node.filepath){
node.filepath = msg.filepath;
}
if (!node.rangecell){
node.rangecell = msg.rangecell;
}
if(!node.columnkey){
node.columnkey = msg.columnkey;
}
if (!node.sheet){
node.sheet = msg.sheet;
}
const excelToJson = require('convert-excel-to-json');
let result = {};
let columnas;
const defaultColumn = '{"*": "{{columnHeader}}"}';
if(node.columnkey){
columnas = JSON.parse(node.columnkey);
}else{
columnas = JSON.parse(defaultColumn);
}
result = excelToJson({
sourceFile: node.filepath,
range: node.rangecell,
columnToKey: columnas
// sheets: node.sheet
})
if (node.sheet){
msg.payload = result[node.sheet];
}else{
msg.payload = result;
}
node.send(msg);
});
}
RED.nodes.registerType("XLSX-to-json", convertxlsx);
}