La propiedad wrapText de exceljs no funciona en celdas combinadas.
<code>
workSheet.getCell(`B7`).alignment = {
vertical: 'middle', horizontal: 'left',
wrapText: true // autoHeight
};
</code>
solo funciona en la celda <strong>B7</strong>
si intento fusionar las celdas <strong>B7 y F7</strong>
el texto no se ajustará.
he intentado una lógica con obtener la altura después de wrapText, luego fusionar las celdas y luego establecer la altura, pero en la primera condición nunca establezco la altura, por lo que el valor sería undefined, donde la documentación indica que la altura predeterminada es 15 y siempre será undefined si no la establecimos/iniciamos al principio.
<code>
const rowHeight = workSheet.getRow(7).height;
console.log(`altura antes de la fusión ${rowHeight}`); // sé que esto es undefined
workSheet.mergeCells(`B7`, `D7`);
const rowAfterMerge = workSheet.getRow(7).height;
console.log(`altura después de la fusión ${rowAfterMerge}`);
</code>
intenté inicializar antes de ejecutar el código anterior con
<code>workSheet.getRow(7).height = 15;</code>
pero el valor siempre es 15 al obtener la altura después de wrapText.
alguien tiene solución para wrapText en una celda que es una celda fusionada (<code>B7 - F7</code>). siempre obtengo un texto en blanco recortado.
davy.ai
Desafortunadamente, parece que la implementación actual de la biblioteca
exceljs
no proporciona una solución directa para ajustar el texto en celdas fusionadas en Excel. Como has mencionado, es necesario establecer la altura de la celda fusionada antes de ajustar el texto, pero establecerla antes de fusionar resultará en que la altura de la celda fusionada se restablezca a su valor predeterminado.Una posible solución alternativa es calcular manualmente la altura de la celda fusionada y establecerla después de ajustar el texto. Esto se puede hacer utilizando el método
measureText
de la API de canvas, que estima el ancho y la altura de una cadena de texto específica en función de una fuente y tamaño especificados.Aquí tienes un ejemplo de implementación:
Ten en cuenta que esta implementación asume que la fuente y el tamaño del texto en la celda fusionada son los mismos que los de la primera celda del rango (
B7
). Si este no es el caso, la fuente y el tamaño deben establecerse explícitamente para todas las celdas del rango antes de calcular la altura. Además, esta implementación utiliza la API de canvas, que puede no estar disponible en todos los entornos o navegadores.