React usando células
Los objetos WorksheetCell
en una hoja de cálculo de Excel son el objeto que contiene los valores de datos reales de la hoja de cálculo. Este tema repasa las muchas operaciones que puede realizar en estas celdas, como acceder a ellas y a sus regiones por nombre, agregar fórmulas y comentarios a las celdas, y fusionarlas y formatearlas.
React Using Cells Example
References
El siguiente código muestra las importaciones necesarias para utilizar los fragmentos de código siguientes:
import { Workbook } from "igniteui-react-excel";
import { WorkbookFormat } from "igniteui-react-excel";
import { Worksheet } from "igniteui-react-excel";
import { WorksheetTable } from "igniteui-react-excel";
import { NamedReference } from "igniteui-react-excel";
import { WorksheetCellComment } from "igniteui-react-excel";
import { FormattedString } from "igniteui-react-excel";
Referencing Cells and Regions
Puede acceder a un objeto WorksheetCell
o a un objeto WorksheetRegion
llamando a los métodos getCell
o getRegion
del objeto worksheet
, respectivamente. Ambos métodos aceptan un parámetro de cadena que hace referencia a una celda. Obtener una referencia a una celda es útil al aplicar formatos o trabajar con fórmulas y contenidos de celda.
El siguiente código de ejemplo demuestra cómo hacer referencia a celdas y regiones:
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
//Accessing a single cell
var cell = worksheet.getCell("E2");
//Accessing a range of cells
var region = worksheet.getRegion("G1:G10");
Accessing Cells and Regions by Name
En Microsoft Excel, las celdas individuales, así como las regiones de celdas, pueden tener nombres asignados. El nombre de una celda o región se puede utilizar para hacer referencia a esa celda o región en lugar de su dirección.
La biblioteca de Excel de Infragistics React admite la referencia de celdas y regiones por nombre a través de los métodos getCell
y getRegion
del objeto de worksheet
. Usted hace referencia a la celda o región utilizando la instancia NamedReference
que hace referencia a esa celda o región.
Puede utilizar el siguiente fragmento de código como ejemplo para nombrar una celda o región:
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
var cell_reference = workbook.namedReferences().add("myCell", "=Sheet1:A1");
var region_reference = workbook.namedReferences().add("myRegion", "=Sheet1!A1:B2");
El siguiente código se puede utilizar para obtener la celda y la región a las que hacen referencia las referencias denominadas "myCell" y "myRegión" anteriores:
var cell = worksheet.getCell("myCell");
var region = worksheet.getRegion("myRegion");
Adding a Comment to a Cell
Un comentario le permite mostrar sugerencias o notas para una celda cuando el mouse del usuario final pasa sobre una celda. Los comentarios se muestran como una leyenda similar a información sobre herramientas que contiene texto. La biblioteca de Excel Infragistics React le permite agregar comentarios a una celda configurando la propiedad comment
de un objeto WorksheetCell
.
El siguiente código de ejemplo demuestra cómo agregar un comentario a una celda:
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
var cellComment = new WorksheetCellComment();
var commentText = new FormattedString("This cell has a comment.");
cellComment.text = commentText;
worksheet.rows(0).cells(0).comment = cellComment;
Adding a Formula to a Cell
La biblioteca de Excel de Infragistics React le permite agregar fórmulas de Microsoft Excel a una celda o grupo de celdas en una hoja de trabajo. Puede hacer esto usando el método applyFormula
del objeto WorksheetCell
o creando una instancia de un objeto formula
y aplicándolo a una celda. Independientemente de la manera en que aplique una fórmula a una celda, puede acceder al objeto formula
utilizando la propiedad de formula
del objeto WorksheetCell
. Si necesita el valor, utilice la propiedad value
de la celda.
El siguiente código le muestra cómo agregar una fórmula a una celda.
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
worksheet.rows(5).cells(0).applyFormula("=SUM(A1:A5)");
//Using a Formula object to apply a formula
var sumFormula = Formula.parse("=SUM(A1:A5)", CellReferenceMode.A1);
sumFormula.applyTo(worksheet.rows(5).cells(0));
Copying a Cell’s Format
Las celdas pueden tener diferentes formatos, incluido el color de fondo, la cadena de formato y el estilo de fuente. Si necesita que una celda tenga el mismo formato que una celda previamente formateada, en lugar de configurar individualmente cada opción expuesta por la propiedad cellFormat
del objeto WorksheetCell
, puede llamar al método setFormatting
del objeto cellFormat
y pasarle un objeto cellFormat
para copiar. Esto copiará cada configuración de formato de la primera celda a la segunda celda. También puede hacer esto para una fila, región de celda fusionada o columna.
El siguiente código le muestra cómo copiar el formato de la segunda columna a la cuarta columna:
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
//Format 2nd column
worksheet.columns(1).cellFormat.fill = CellFill.createSolidFill("Blue");
worksheet.columns(1).cellFormat.font.bold = true;
//Copy format of 2nd column to 4th column
worksheet.columns(3).cellFormat.setFormatting(worksheet.columns(1).cellFormat);
Formatting a Cell
La biblioteca de Excel de Infragistics React le permite personalizar la apariencia y el comportamiento de una celda. Puede personalizar una celda estableciendo propiedades expuestas por la propiedad cellFormat
de los objetos WorksheetCell
, WorksheetRow
, WorksheetColumn
o WorksheetMergedCellsRegion
.
Puede personalizar todos los aspectos de la apariencia de una celda. Puede configurar la fuente, el fondo y los bordes de una celda, así como la alineación y rotación del texto. Incluso puedes aplicar un formato diferente carácter por carácter para el texto de una celda.
También puede formatear los valores de las celdas asignando una cadena de formato. Una cadena de formato aceptable sigue los estándares y códigos de formato tradicionales.
El siguiente código le muestra cómo formatear una celda para mostrar números como moneda:
var workbook = new Workbook(format);
var workbook = workbook.worksheets().add("Sheet1");
worksheet.columns(2).cellFormat.formatString = "\"$\"#,##0.00";
Excel 2007 Color Model
La paleta de colores es análoga al diálogo de colores en la interfaz de usuario de Microsoft Excel 2007. Puede abrir este cuadro de diálogo de color navegando a Opciones de Excel => Guardar => Colores.
Puede crear todos los tipos de relleno posibles utilizando propiedades y métodos estáticos en la clase CellFill
. Son los siguientes:
NoColor
: propiedad que representa un relleno sin color, lo que permite que se muestre una imagen de fondo de la hoja de trabajo, si la hay.CreateSolidFill
: devuelve una instanciaCellFillPattern
que tiene un estilo de patrón deSolid
y un color de fondo establecido en elcolor
oWorkbookColorInfo
especificado en el método.CreatePatternFill
: devuelve una instanciaCellFillPattern
que tiene el estilo de patrón especificado y elcolor
o los valoresWorkbookColorInfo
, especificados para los colores de fondo y patrón.CreateLinearGradientFill
: devuelve una instanciaCellFillLinearGradient
con el ángulo y las paradas de degradado especificados.CreateRectangularGradientFill
: devuelve una instanciaCellFillRectangularGradient
con los topes izquierdo, superior, derecho e inferior especificados del rectángulo interior y los topes de degradado. Si no se especifican los valores del rectángulo interior, el centro de la celda se utiliza como rectángulo interior.
Los tipos derivados, que representan los distintos rellenos que se pueden crear, son los siguientes:
CellFillPattern
: un patrón que representa un relleno de celda sin color, un color sólido o un relleno de patrón para una celda. Tiene información de color de fondo y una información de color de patrón que corresponden directamente a las secciones de color en la pestaña Relleno del cuadro de diálogo Formato de celdas de Excel.CellFillLinearGradient
: representa un relleno degradado lineal. Tiene un ángulo, que son grados en el sentido de las agujas del reloj del degradado lineal de izquierda a derecha, y una colección de paradas de degradado que describe dos o más transiciones de color a lo largo del degradado.CellFillRectangularGradient
: representa un relleno degradado rectangular. Tiene valores superior, izquierdo, derecho e inferior, que describen, en coordenadas relativas, el rectángulo interior desde el cual comienza el gradiente y sale hacia los bordes de la celda. También tiene una colección de paradas de degradado que describe dos o más transiciones de color a lo largo del camino desde el rectángulo interior hasta los bordes de la celda.
El siguiente fragmento de código demuestra cómo crear un relleno sólido en una WorksheetCell
:
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
var cellFill = CellFill.createSolidFill("Blue");
worksheet.rows(0).cells(0).cellFormat.fill = cellFill;
Puede especificar un color (el color del fondo, borde, etc.) de las celdas de Excel utilizando degradados lineales y rectangulares en las celdas. Cuando los libros con estos degradados se guardan en formato de archivo .xls y se abren en Microsoft Excel 2007/2010, los degradados serán visibles, pero cuando estos archivos se abren en Microsoft Excel 2003, la celda se rellenará con el color sólido desde el principio. parada de gradiente.
Estas son las formas en que se puede definir un color, de la siguiente manera:
El color automático (que es el color del sistema WindowText)
Cualquier color RGB definido por el usuario
A theme color
Si se utiliza un color RGB o de tema, se puede aplicar un tinte opcional para aclarar u oscurecer el color. Este tinte no se puede configurar directamente en la interfaz de usuario de Microsoft Excel 2007, pero varios colores en la paleta de colores que se muestra al usuario son en realidad colores de tema con tintes aplicados.
Cada libro tiene 12 colores temáticos asociados. Son los siguientes:
Light 1
Light 2
Dark 1
Dark 2
Accent1
Accent2
Accent3
Accent4
Accent5
Accent6
Hipervínculo
Followed Hyperlink
Hay valores predeterminados cuando se crea un libro, que se pueden personalizar a través de Excel.
Los colores están definidos por la clase WorkbookColorInfo
, que es una clase inmutable sellada. La clase tiene una propiedad Automatic
estática, que devuelve el color automático, y hay varios constructores que le permiten crear una instancia WorkbookColorInfo
con un color o un valor de tema y un tinte opcional.
El método getResolvedColor
en WorkbookColorInfo
le permite determinar qué color verá realmente el usuario cuando abra el archivo en Excel.
Si WorkbookColorInfo
representa un color de tema, debe pasar una instancia de Workbook al método para que pueda obtener el valor RGB del color del tema del libro.
Al guardar en formatos de archivo más nuevos, como .xlsx, la información de color más nueva se guarda directamente en el archivo. Al guardar en un formato de archivo antiguo como .xls, se guardará el índice del color más cercano en la paleta. Además, los formatos más antiguos tienen registros de características futuras que se pueden guardar para indicar la información de color más nueva.
Cuando los formatos más antiguos se abren en Microsoft Excel 2003 y versiones anteriores, estos registros de características futuras se ignoran, pero cuando los formatos de archivos más antiguos se abren en Excel 2007 y versiones posteriores, sus registros se leen y la información de color de ellos sobrescribe el color indexado que se cargó previamente desde los registros en formato normal.
Excel Format Support
Puede configurar una gran cantidad de formatos diferentes en una WorksheetCell
utilizando el objeto cellFormat
devuelto por la propiedad cellFormat
de esa celda. Este objeto cellFormat
le permite aplicar estilo a muchos aspectos diferentes de la celda, como bordes, fuente, relleno, alineaciones y si la celda debe reducirse o no para ajustarse o bloquearse.
También puede acceder a los estilos integrados en Microsoft Excel 2007 utilizando la colección styles
del objeto workbook
. La lista completa de estilos en Excel se puede encontrar en la galería Estilos de celda de la pestaña Inicio de Microsoft Excel 2007.
Hay un tipo especial de estilo en la colección styles
del libro conocido como estilo "normal", al que se puede acceder utilizando la propiedad normalStyle
de esa colección o indexando en la colección con el nombre "Normal".
normalStyle
contiene las propiedades predeterminadas para todas las celdas del libro, a menos que se especifique lo contrario en una fila, columna o celda. Cambiar las propiedades en normalStyle
cambiará todas las propiedades de formato de celda predeterminadas en el libro. Esto es útil, por ejemplo, si desea cambiar la fuente predeterminada de su libro.
Puede borrar la colección styles
o restablecerla a su estado predefinido utilizando los métodos clear
y reset
, respectivamente. Ambos eliminarán todos los estilos definidos por el usuario, pero clear
borrará la colección styles
por completo.
Con esta característica, se agregó una propiedad style
al objeto cellFormat
. Esta es una referencia a una instancia WorkbookStyle
, que representa el estilo principal del formato. Para formatos de un estilo, esta propiedad siempre será nula, porque los estilos no pueden tener un estilo principal. Para formatos de fila, columna y celda, la propiedad style
siempre devuelve el normalStyle
de forma predeterminada.
Si la propiedad style
se establece en nula, volverá al normalStyle
. Si se establece en otro estilo en la colección de estilos, ese estilo ahora contendrá los valores predeterminados para todas las propiedades no configuradas en el formato de celda.
Cuando la propiedad style
se establece en un formato de celda, las opciones de formato incluidas en el style
se eliminan del formato de celda. Todas las demás propiedades se dejan intactas. Por ejemplo, si se creó un estilo de celda que incluye formato de borde y ese estilo se estableció como style
de celda, se eliminará la opción de formato de borde en el formato de celda y el formato de celda solo incluirá formato de relleno.
Cuando se elimina un indicador de opción de formato de un formato, todas las propiedades asociadas se restablecen a sus valores no establecidos, por lo que las propiedades del borde del formato de celda se restablecen implícitamente a sus valores predeterminados/no establecidos.
Puede determinar qué se vería realmente en las celdas utilizando el método getResolvedCellFormat
en clases que representan una fila, columna, celda y celda combinada.
Este método devuelve una instancia cellFormat
que hace referencia al cellFormat
asociado en el que se basa. Por lo tanto, los cambios posteriores en la propiedad cellFormat
se reflejarán en la instancia devuelta por una llamada getResolvedCellFormat
.
Merging Cells
Además de establecer el valor o el formato de las celdas, también puedes fusionar celdas para que dos o más celdas parezcan una sola. Si combina celdas, deben estar en una región rectangular.
Cuando combina celdas, cada celda de la región tendrá el mismo valor y formato de celda. Las celdas combinadas también se asociarán con el mismo objeto WorksheetMergedCellsRegion
, al que se puede acceder desde su propiedad associatedMergedCellsRegion
. El objeto WorksheetMergedCellsRegion
resultante también tendrá el mismo valor y formato de celda que las celdas.
Establecer el valor (o formato de celda) de la región o cualquier celda de la región cambiará el valor de todas las celdas y de la región. Si separa celdas, todas las celdas previamente combinadas conservarán el formato de celda compartida que tenían antes de separarlas. Sin embargo, solo la celda superior izquierda de la región conservará el valor compartido.
Para crear una región de celdas combinadas, debe agregar un rango de celdas a la colección mergedCellsRegions
del objeto worksheet
. Esta colección expone un método Add
que toma cuatro parámetros enteros. Los cuatro parámetros determinan el índice de la fila y columna inicial (celda más arriba a la izquierda) y el índice de la fila y columna final (celda más abajo a la derecha).
var workbook = new Workbook();
var worksheet = workbook.worksheets().add("Sheet1");
// Make some column headers
worksheet.rows(1).cells(1).value = "Morning";
worksheet.rows(1).cells(2).value = "Afternoon";
worksheet.rows(1).cells(3).value = "Evening";
// Create a merged region from column 1 to column 3
var mergedRegion1 = ws.mergedCellsRegions().add(0, 1, 0, 3);
// Set the value of the merged region
mergedRegion1.value = "Day 1";
// Set the cell alignment of the middle cell in the merged region.
// Since a cell and its merged region shared a cell format, this will ultimately set the format of the merged region
worksheet.rows(0).cells(2).cellFormat.alignment = HorizontalCellAlignment.Center;
Retrieving the Cell Text as Displayed in Excel
El texto que se muestra en una celda depende de varios factores además del valor real de la celda, como la cadena de formato y el ancho de la columna que contiene la celda.
La cadena de formato determina cómo se convierte el valor de la celda en texto y qué carácter literal se debe mostrar con el valor formateado. Puede encontrar información más detallada sobre los códigos de formato aquí.
La cantidad de espacio horizontal disponible en una celda juega un papel importante en cómo se muestra el valor al usuario.
El texto mostrado puede ser diferente según los distintos anchos de columna.
Al mostrar números y utilizar una cadena de formato que contenga "General" o"@", existen varios formatos que se intentan encontrar para encontrar un formato que se ajuste al ancho de la celda. A continuación se muestra una lista de formatos de ejemplo:
Valor normal: el número se muestra como sería si hubiera una cantidad ilimitada de espacio.
Eliminar dígitos decimales: los dígitos decimales se eliminarán uno a la vez hasta que se encuentre un formato que se ajuste. Por ejemplo, un valor de 12345,6789 se reducirá a los siguientes formatos hasta que uno quepa: 12345,679, 12345,68, 12345,7 y 12346. Esto se detendrá cuando el primer dígito significativo sea el único que quede, por lo que, por ejemplo, un valor como 0,0001234567890 solo se puede reducido a 0,0001.
Científico, 5 dígitos decimales: el número se muestra en forma de 0,00000E+00, como 1,23457E+09 o 1,23457E-04.
Científico, 4 dígitos decimales: el número se muestra en forma de 0,0000E+00, como 1,2346E+09 o 1,23456E-04.
Científico, 3 dígitos decimales: el número se muestra en forma de 0,000E+00, como 1,235E+09 o 1,235E-0.
Científico, 2 dígitos decimales: el número se muestra en forma de 0,00E+00, como 1,23E+09 o 1,23E-04.
Científico, 1 dígito decimal: el número se muestra en forma de 0,0E+00, como 1,2E+09 o 1,2E-04.
Científico, 0 dígitos decimales: el número se muestra en forma de 0E+00, como 1E+09 o 1E-04.
Valor redondeado: si el primer dígito significativo está en la parte decimal del número, el valor se redondeará al valor entero más cercano. Por ejemplo, para un valor 0,0001234567890, se redondeará a 0 y el texto mostrado en la celda será 0.
Marcas de almohadilla: si no se puede mostrar una versión condensada del número, las almohadillas (#) se repetirán en todo el ancho de la celda.
Cadena vacía: si no caben marcas hash en la celda, se devolverá una cadena vacía como texto de celda mostrado.
Si la cadena de formato para el valor numérico no contiene General o @, solo existen las siguientes etapas de cambio de tamaño: Valor normal, Marcas de almohadilla, Cadena vacía
Si se utiliza un texto en la celda, el texto mostrado en la celda siempre tendrá el valor completo, independientemente de si está cortado o no en la celda.
El único momento en el que este no es el caso es cuando se utilizan caracteres de relleno en la cadena de formato. Luego, el valor se mostrará como todas las marcas de almohadilla cuando no haya suficiente espacio para el texto.
Puede configurar la propiedad displayOptions
'showFormulasInCells
de la hoja de cálculo para que las fórmulas se muestren en las celdas en lugar de sus resultados, y se ignoren las cadenas de formato y los anchos de celda. Los valores de texto se muestran como si su cadena de formato fuera @ , los valores numéricos no integrales se muestran como si su cadena de formato fuera 0.0 y los valores numéricos integrales se muestran como si su cadena de formato fuera 0 .
Además, si el valor no cabe, no se mostrará como todos los hashes. El texto mostrado seguirá devolviendo su texto completo como texto de la celda, aunque no se vea por completo.
El siguiente fragmento de código demuestra el uso del método getText
para obtener el texto tal como se mostraría en Excel:
var workbook = new Workbook();
var worksheet = this.workbook.worksheets().add("Sheet1");
var cellText = worksheet.rows(0).cells(0).getText();