Cómo redimensionar automáticamente filas y columnas

por Chaknith Bin

Cambiar el tamaño de las filas y columnas de una hoja de cálculo puede ahorrar mucho espacio y hacerla más legible. La librería IronXL C# proporciona la funcionalidad de redimensionar automáticamente filas y columnas. Al estar realizado en C#, los métodos de redimensionamiento pueden ser llamados para todas las filas y columnas existentes, automatizando la tarea manual en la hoja de cálculo.

Biblioteca NuGet C# para Excel

Instalar con NuGet

Install-Package IronXL.Excel
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Ejemplo de redimensionamiento automático de filas

El método AutoSizeRow redimensiona automáticamente la altura de una fila especificada(s) en función de su contenido.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-rows.cs
using IronXL;

//  Cargar hoja de cálculo existente
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

//  Aplicar cambio de tamaño automático en la fila 2
workSheet.AutoSizeRow(1);

workBook.SaveAs("autoResize.xlsx");
Imports IronXL

'  Cargar hoja de cálculo existente
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

'  Aplicar cambio de tamaño automático en la fila 2
workSheet.AutoSizeRow(1)

workBook.SaveAs("autoResize.xlsx")
VB   C#

Demostración

Redimensionar fila automáticamente

Ejemplo de redimensionamiento automático de columnas

Utilice el método AutoSizeColumn para redimensionar el ancho de la columna(s) en función de la longitud de su contenido.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-columns.cs
using IronXL;

//  Cargar hoja de cálculo existente
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

//  Aplicar cambio de tamaño automático a la columna A
workSheet.AutoSizeColumn(0);

workBook.SaveAs("autoResizeColumn.xlsx");
Imports IronXL

'  Cargar hoja de cálculo existente
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

'  Aplicar cambio de tamaño automático a la columna A
workSheet.AutoSizeColumn(0)

workBook.SaveAs("autoResizeColumn.xlsx")
VB   C#

Demostración

Redimensionar columna automáticamente

Consejo
Todas las posiciones de índice de filas y columnas siguen una indexación basada en cero.


Ejemplo de redimensionamiento automático avanzado de filas

Otra sobrecarga del método AutoSizeRow toma un segundo parámetro como valor Boolean. Cuando se establece en true, la altura de las celdas combinadas también se tendrá en cuenta tomando la altura del valor de la celda superior izquierda en la región combinada y dividiéndola por el número de filas de la región combinada. Esta condición se aplica cuando el contenido de la celda combinada tiene la altura más alta en relación con el resto de las filas de la región combinada.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-rows.cs
using IronXL;

//  Cargar hoja de cálculo existente
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

//  Aplicar el cambio de tamaño automático a las filas individualmente
workSheet.AutoSizeRow(0, true);
workSheet.AutoSizeRow(1, true);
workSheet.AutoSizeRow(2, true);

workBook.SaveAs("advanceAutoResizeRow.xlsx");
Imports IronXL

'  Cargar hoja de cálculo existente
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

'  Aplicar el cambio de tamaño automático a las filas individualmente
workSheet.AutoSizeRow(0, True)
workSheet.AutoSizeRow(1, True)
workSheet.AutoSizeRow(2, True)

workBook.SaveAs("advanceAutoResizeRow.xlsx")
VB   C#

Ejemplo

Por ejemplo, supongamos que el contenido tiene una altura de 192 píxeles y se encuentra en una región combinada que abarca 3 filas. Al aplicar el tamaño automático a cualquiera de estas filas, el algoritmo divide la altura del contenido de 192 px entre 3, lo que da como resultado una altura de 64 px para cada fila. Recuerde que el método AutoSizeRow debe aplicarse a cada fila individualmente.

Advance Auto Resize Row

¿Y si el valor es falso?

Cuando el valor es falso, el método AutoSizeRow ajustará la altura de la fila basándose en el contenido de la celda con mayor altura. En Microsoft Excel, cuando se combina un rango de celdas, sólo conserva el valor de la celda superior izquierda y borra el resto. Sin embargo, con IronXL, el Fusión se realiza sin borrar los valores de otras celdas de la región fusionada.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-rows-false.cs
using IronXL;

workSheet.Merge("A1:A3");

workSheet.AutoSizeRow(0, false);
workSheet.AutoSizeRow(1, false);
workSheet.AutoSizeRow(2, false);
Imports IronXL

workSheet.Merge("A1:A3")

workSheet.AutoSizeRow(0, False)
workSheet.AutoSizeRow(1, False)
workSheet.AutoSizeRow(2, False)
VB   C#
Advance Auto Resize Row

Para fines de demostración, he ajustado manualmente la altura de la fila en lugar de utilizar el Excel función de ajuste automático de la altura de las filas. Esto se hizo para evitar añadir un notable relleno superior e inferior.

Con el parámetro useMergedCells en false, no se tiene en cuenta la altura de las celdas combinadas. Como resultado, no hay cambios en la altura, y la altura de cada fila se calcula únicamente en función de su contenido.

Ejemplo de redimensionamiento automático avanzado de columnas

De forma similar a AutoSizeRow, también puede hacer que el redimensionamiento de las columnas tenga en cuenta la anchura de las celdas combinadas. Si se establece en true, se tendrá en cuenta la anchura de las celdas combinadas. Si la celda combinada tiene el contenido más largo, la anchura de la columna redimensionada será la anchura de la celda combinada dividida por el número de columnas de la región combinada.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-columns.cs
using IronXL;

//  Cargar hoja de cálculo existente
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

//  Aplicar el cambio de tamaño automático a las columnas de forma individual
workSheet.AutoSizeColumn(0, true);
workSheet.AutoSizeColumn(1, true);
workSheet.AutoSizeColumn(2, true);

workBook.SaveAs("advanceAutoResizeColumn.xlsx");
Imports IronXL

'  Cargar hoja de cálculo existente
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

'  Aplicar el cambio de tamaño automático a las columnas de forma individual
workSheet.AutoSizeColumn(0, True)
workSheet.AutoSizeColumn(1, True)
workSheet.AutoSizeColumn(2, True)

workBook.SaveAs("advanceAutoResizeColumn.xlsx")
VB   C#

Ejemplo

Por ejemplo, si el contenido tiene una anchura de 117 píxeles y se encuentra en una región combinada que abarca 2 columnas, al aplicar el tamaño automático en cualquiera de estas columnas se obtendrá una anchura de 59 píxeles para cada columna. El método AutoSizeColumn debe aplicarse a cada columna individualmente.

Columna Advance Auto Resize

¿Y si el valor es falso?

Cuando el valor es false, el método AutoSizeColumn ajusta la anchura basándose en el contenido de la celda con mayor anchura. En Microsoft Excel, cuando se combina un rango de celdas, sólo conserva el valor superior izquierdo y borra el resto. Sin embargo, el IronXL Fusión NO borra el valor de otras celdas de la región combinada.

:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-advance-columns-false.cs
workSheet.Merge("A1:B1");

workSheet.AutoSizeColumn(0, false);
workSheet.AutoSizeColumn(1, false);
workSheet.Merge("A1:B1")

workSheet.AutoSizeColumn(0, False)
workSheet.AutoSizeColumn(1, False)
VB   C#
Columna Advance Auto Resize

La anchura de las celdas combinadas no se priorizaba, por lo que no se producían cambios en la anchura, ya que la anchura de cada columna se calculaba en función de la anchura de su contenido.

Las Diferencias entre Excel y IronXL Auto Resize

Filas

La función de Excel de autoajuste del alto de fila aplica un notable relleno superior e inferior a la celda.

Comparación entre Excel y IronXL Aute Resize Row

Columnas

La función de Excel de ajuste automático del ancho de columna también aplica un relleno izquierdo y derecho a la celda, pero es menos perceptible.

Comparación entre Excel y IronXL Aute Resize Column

Ejemplo de redimensionamiento manual de altura y anchura

Además de confiar en los métodos AutoSizeRow y AutoSizeColumn para calcular y ajustar la anchura y la altura del contenido, también tiene la flexibilidad de ajustar manualmente la anchura y la altura de las columnas y filas para satisfacer sus necesidades específicas. Esto le permite fijarlas en un valor determinado que se adapte a sus necesidades.

  • Ajuste la altura: establezca la propiedad Height de la RangeRow.
  • Ajuste la anchura: establezca la propiedad Width de la RangeColumn.
:path=/static-assets/excel/content-code-examples/how-to/autosize-rows-columns-manual.cs
using IronXL;

//  Cargar hoja de cálculo existente
WorkBook workBook = WorkBook.Load("sample.xlsx");
WorkSheet workSheet = workBook.DefaultWorkSheet;

RangeRow row = workSheet.GetRow(0);
row.Height = 10; //  Ajustar altura

RangeColumn col = workSheet.GetColumn(0);
col.Width = 10; //  Fijar anchura

workBook.SaveAs("manualHeightAndWidth.xlsx");
Imports IronXL

'  Cargar hoja de cálculo existente
Private workBook As WorkBook = WorkBook.Load("sample.xlsx")
Private workSheet As WorkSheet = workBook.DefaultWorkSheet

Private row As RangeRow = workSheet.GetRow(0)
row.Height = 10 '  Ajustar altura

Dim col As RangeColumn = workSheet.GetColumn(0)
col.Width = 10 '  Fijar anchura

workBook.SaveAs("manualHeightAndWidth.xlsx")
VB   C#

Unidades de altura y anchura en Excel

Las unidades de medida para la altura y la anchura en Excel difieren entre sí. En concreto, la altura se mide en 1/20 de punto, mientras que la anchura se determina en función del número de "0" que caben en una celda utilizando el tipo de letra especificado en el estilo "Normal".

Para simplificar la conversión de unidades, pongamos el valor en IronXL, que corresponde a los píxeles de visualización en Microsoft Excel. Es importante señalar que un píxel no representa un punto físico en la pantalla; sino que se define como 1/96 de pulgada, independientemente de la resolución real de la pantalla. El propio Excel está diseñado para ser independiente de la resolución y no depende de los píxeles físicos.

Para establecer una relación entre las medidas de altura y anchura de IronXL y Excel, puede considerar las siguientes aproximaciones:

  • Altura: RangeRow.Height = 10 dará como resultado una altura aproximada de 1 píxel.
  • Anchura: RangeColumn.Width = 23.255 corresponderá a 1 píxel.

Chaknith Bin

Ingeniero de software

Chaknith es el Sherlock Holmes de los desarrolladores. La primera vez que se le ocurrió que podría tener futuro en la ingeniería de software fue cuando hacía retos de código por diversión. Su trabajo se centra en IronXL e IronBarcode, pero se enorgullece de ayudar a los clientes con todos los productos. Chaknith aprovecha sus conocimientos, adquiridos hablando directamente con los clientes, para ayudar a mejorar los propios productos. Sus comentarios anecdóticos van más allá de los tickets de Jira y apoyan el desarrollo de productos, la documentación y el marketing, para mejorar la experiencia general del cliente.Cuando no está en la oficina, se le puede encontrar aprendiendo sobre aprendizaje automático, codificación y senderismo.