Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1K
Visualizações
Omita el inicio de filas en blanco en Excel con XLSX en JavaScript Sheet-JS

Tengo el siguiente código que funciona muy bien cuando la fila del encabezado es la fila 1

 readerData(rawFile) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = e => { const data = e.target.result; const workbook = XLSX.read(data, { type: "array" }); const firstSheetName = workbook.SheetNames[0]; const worksheet = workbook.Sheets[firstSheetName]; const header = this.getHeaderRow(worksheet); const results = XLSX.utils.sheet_to_json(worksheet,{ header: 0, range: 0, defval: ""}); this.generateData({ header, results }); this.loading = false; resolve(); }; reader.readAsArrayBuffer(rawFile); }); }, generateData({ header, results }) { this.excelData.header = header; this.excelData.results = results; this.excelData.original_results = [...results]; this.onSuccess && this.onSuccess(this.excelData); var grid = this.$refs.membersGrid.ej2Instances; grid.dataSource = this.excelData.results; grid.refresh(); }, getHeaderRow(sheet) { const headers = []; const range = XLSX.utils.decode_range(sheet["!ref"]); let C; const R = range.sr; /* start in the first row */ for (C = range.sc; C <= range.ec; ++C) { /* walk every column in the range */ const cell = sheet[XLSX.utils.encode_cell({ c: C, r: R })]; /* find the cell in the first row */ let hdr = "UNKNOWN " + C; // <-- replace with your desired default if (cell && cell.t) hdr = XLSX.utils.format_cell(cell); headers.push(hdr); } return headers; },

Funciona muy bien y coloca todos los valores de encabezado en excelData.header y coloca todos los datos de matriz con nombre en excelData.results. Mi problema es que todo se complica cuando la primera fila o las dos primeras filas están en blanco o necesito omitirlas. He intentado

 https://github.com/SheetJS/sheetjs/issues/463

pero estoy usando "xlsx": "^0.17.1" . cuando usaba

 range.sr = 1;

Pude cambiar mi rango a A2 pero no pude obtener mi matriz de datos con nombre. Cualquier ayuda es apreciada.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Después de unos días de excavación y mucho código de prueba y error, obtuve mi solución que publicaré para que otros la usen si tienen el mismo problema. Usé el mismo código hasta este punto.

 readerData(rawFile) { let fileName = rawFile.name; this.showLoading(); return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onload = e => { var data = e.target.result; var workbook = XLSX.read(data, { type: "array" }); var firstSheetName = workbook.SheetNames[0]; var worksheet = workbook.Sheets[firstSheetName]; var range = XLSX.utils.decode_range(worksheet['!ref']); var header = this.getHeaderRow(worksheet,range);

La razón de esto es que me da el nombre del archivo, el nombre de las primeras hojas y el valor en la primera fila. A partir de ahí, puedo determinar dónde está mi fila de encabezado y dónde comienza la fila de datos. La fila de datos no tiene que ser la fila después del encabezado, por lo que mi próxima línea de código podría ser:

 range.sr = 1; // <-- zero-indexed, so setting to 1 will skip row 0 worksheet['!ref'] = XLSX.utils.encode_range(range); header = this.getHeaderRow(worksheet,range); range.sr = 2; var results = XLSX.utils.sheet_to_json(worksheet,{ header: header, range: range, defval: ""});

Los resultados se basan en el encabezado y el rango de valores que se han ajustado mediante:

 range.sr = 1 or 2 or whatever number you need

Ahora puedo leer todas las hojas de Excel y crear una matriz con nombre limpia para el procesamiento de datos. Espero que esto ayude a alguien. en lugar de mis 0 originales

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda