es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El nombre de la hoja de cálculo Xlsx excede los 31 caracteres de longitud en React.

Estoy utilizando React para obtener datos de tabla desde la base de datos y exportándolo como Excel y colocando el nombre de la tabla como título de Excel. Pero me enfrento a un problema si el nombre del archivo de Excel excede los 31 caracteres, la hoja no se descarga. Y arroja el siguiente error en la salida de la consola del navegador.

Uncaught Error: Sheet names cannot exceed 31 chars

Aquí está mi código abajo:

var workbook=XLSX.utils.book_new();
workbook.SheetNames.push(title); //title: tablename
var workSheet=XLSX.utils.aoa_to_sheet(tableData); //tableData: datos de la base de datos
workbook.Sheets[title]=workSheet;
var output=XLSX.write(workbook, {bookType:'xlsx', type:'binary'});
function s2ab(s) {
  var buf = new ArrayBuffer(s.length);
  var view = new Uint8Array(buf);
  for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;
  return buf;
}
saveAs(new Blob([s2ab(output)], {type:"application/octet-stream"}), title + '.xlsx');

Editar:
No quiero cambiar el nombre de la hoja. Solo quería que React descargue incluso si los nombres de las hojas exceden los 31 caracteres.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema de descarga de archivos de excel, a pesar de exceder los 31 caracteres en el nombre, es necesario asegurarse de que el nombre de la hoja se trunque a 31 caracteres. En el código que proporcionó, puede reemplazar la línea:

    workbook.SheetNames.push(title);
    

    con:

    workbook.SheetNames.push(title.substring(0,31));
    

    Esto asegurará que el nombre de la hoja se trunque al límite de 31 caracteres y el archivo de excel se descargará sin errores.

Comments are closed.