Trabajando con Celdas de GridWeb

Accediendo a las Celdas en la Hoja de Cálculo

Este tema trata sobre las celdas, examinando la característica más básica de GridWeb: acceder a las celdas.

Cada hoja de cálculo contiene un objeto GridCells, una colección de objetos GridCell. Un objeto GridCell representa una celda en Aspose.Cells.GridWeb. Es posible acceder a cualquier celda utilizando GridWeb. Hay dos métodos preferidos:

A continuación, se discute cada enfoque.

Usando el nombre de la celda

Todas las celdas tienen un nombre único. Por ejemplo, A1, A2, B1, B2, etc. Aspose.Cells.GridWeb permite a los desarrolladores acceder a cualquier celda deseada utilizando el nombre de la celda. Simplemente pase el nombre de la celda (como un índice) a la colección GridCells de la hoja de cálculo del GridWeb.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");

Usando los índices de fila y columna

También es posible reconocer una celda por su ubicación en términos de índices de fila y columna. Simplemente pase los índices de fila y columna de una celda a la colección GridCells de la hoja de cálculo del GridWeb. Este enfoque es más rápido que el anterior.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet using its row and column indices
GridCell cell = sheet.getCells().get(0, 1);

Acceder y modificar el valor de una celda

Acceder a las celdas en la hoja de cálculo trata sobre el acceso a las celdas. Este tema amplía esa discusión para mostrar cómo acceder y modificar los valores de las celdas utilizando la API de GridWeb.

Acceder y modificar el valor de una celda

Valores de cadena

Antes de acceder y modificar el valor de una celda, es necesario saber cómo acceder a las celdas. Para obtener detalles sobre los diferentes enfoques para acceder a las celdas, consulte Acceder a las celdas en la hoja de cálculo.

Cada celda tiene una propiedad llamada getStringValue(). Una vez que una celda es accedida, los desarrolladores pueden acceder al método getStringValue() para obtener el valor de cadena de las celdas.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");
//Inserting & modifying the string value of "B1" cell
cell.putValue("Hello Aspose.Grid");

Todos los tipos de valores

Aspose.Cells.GridWeb también proporciona un método especial, putValue, para cada celda. Con este método, es posible insertar o modificar cualquier tipo de valor (booleano, int, double, DateTime y cadena) en una celda.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");
//Putting a value in "B1" cell
cell.putValue(Calendar.getInstance());

También existe una versión sobrecargada del método putValue que puede tomar cualquier tipo de valor en formato de cadena y convertirlo automáticamente a un tipo de dato adecuado. Para que esto ocurra, pase el valor booleano true a otro parámetro del método putValue como se muestra a continuación en el ejemplo.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Accessing "B1" cell of the worksheet
GridCell cell = sheet.getCells().get("B1");
//Putting a numeric value as string in "B1" cell that will be converted to a suitable data type automatically
cell.putValue("19.4", true);

Agregar fórmulas a las celdas

La característica más valiosa ofrecida por Aspose.Cells.GridWeb es el soporte para fórmulas o funciones. Aspose.Cells.GridWeb tiene su propio Motor de Fórmulas que calcula las fórmulas en las hojas de cálculo. Aspose.Cells.GridWeb soporta tanto funciones o fórmulas incorporadas como definidas por el usuario. Este tema discute agregar fórmulas a celdas utilizando la API de Aspose.Cells.GridWeb en detalle.

¿Cómo agregar y calcular una fórmula?

Es posible agregar, acceder y modificar fórmulas en celdas utilizando la propiedad de Fórmula de una celda. Aspose.Cells.GridWeb admite fórmulas definidas por el usuario que van desde simples hasta complejas. Sin embargo, Aspose.Cells.GridWeb también suministra un gran número de funciones o fórmulas incorporadas (similar a Microsoft Excel). Para ver la lista completa de funciones incorporadas, consulte esta lista de funciones admitidas.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Putting some values to cells
sheet.getCells().get("A1").putValue("1st Value");
sheet.getCells().get("A2").putValue("2nd Value");
sheet.getCells().get("A3").putValue("Sum");
sheet.getCells().get("B1").putValue(125.56);
sheet.getCells().get("B2").putValue(23.93);
//Calculating all formulas added in worksheets
gridweb.getWorkSheets().calculateFormula();
//Adding a simple formula to "B3" cell
sheet.getCells().get("B3").setFormula("=SUM(B1:B2)");

Fórmula agregada a la celda B3 pero no calculada por GridWeb

todo:image_alt_text

En la captura de pantalla anterior, puede ver que se ha agregado una fórmula a B3 pero aún no se ha calculado. Para calcular todas las fórmulas, llame al método ‘calculateFormula’ de la colección GridWorksheet de GridWeb después de agregar fórmulas a las hojas de cálculo como se muestra a continuación.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Calculating all formulas added in worksheets
gridweb.getWorkSheets().calculateFormula();

Los usuarios también pueden calcular fórmulas haciendo clic en Enviar.

Haciendo clic en el botón Enviar de GridWeb

todo:image_alt_text

IMPORTANTE: Si un usuario hace clic en los botones Guardar o Deshacer, o en las pestañas de la hoja, todas las fórmulas son calculadas automáticamente por GridWeb.

Resultado de la fórmula después del cálculo

todo:image_alt_text

Referencia a Celdas de Otras Hojas de Cálculo

Usando Aspose.Cells.GridWeb, es posible hacer referencia a los valores almacenados en diferentes hojas de cálculo en sus fórmulas, creando fórmulas complejas.

La sintaxis para hacer referencia al valor de una celda de una hoja de cálculo diferente es NombreDeLaHoja!NombreDeLaCelda.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Accessing the worksheet of the Grid that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Adding a bit complex formula to "A1" cell
sheet.getCells().get("A1").setFormula("=SUM(F1:F7)/ AVERAGE (E1:E7)-Sheet1!C6");

Crear Validación de Datos en una Celda de GridWeb

Aspose.Cells.GridWeb le permite agregar Validación de Datos utilizando el método GridWorksheet.getValidations().add(). Usando este método, debe especificar el Rango de Celdas. Pero si desea crear una Validación de Datos en una sola Celda de GridCell entonces puede hacerlo directamente usando el método GridCell.createValidation(). Del mismo modo, puede eliminar la Validación de Datos de una Celda de GridCell utilizando el método GridCell.removeValidation().

El siguiente código de ejemplo crea una Validación de Datos en una celda B3. Si ingresa cualquier valor que no esté entre 20 y 40, la celda B3 mostrará Error de Validación en forma de XXX Rojos como se muestra en esta captura de pantalla.

todo:image_alt_text

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Access first worksheet
GridWorksheet sheet = gridweb.getWorkSheets().get(0);
//Access cell B3
GridCell cell = sheet.getCells().get("B3");
//Add validation inside the gridcell
//Any value which is not between 20 and 40 will cause error in a gridcell
GridValidation val = cell.createValidation(GridValidationType.WHOLE_NUMBER, true);
val.setFormula1("=20");
val.setFormula2("=40");
val.setOperator(OperatorType.BETWEEN);
val.setShowError(true);
val.setShowInput(true);

Creación de botones de comando personalizados

Aspose.Cells.GridWeb contiene botones especiales como Enviar, Guardar y Deshacer. Todos estos botones realizan tareas específicas para Aspose.Cells.GridWeb. También es posible agregar botones personalizados que realicen tareas personalizadas. Este tema explica cómo usar esta característica.

El siguiente código de ejemplo explica cómo crear un botón de comando personalizado y cómo manejar su evento de clic. Puede usar cualquier icono para su botón de comando personalizado. A modo de ilustración, usamos esta imagen de icono.

todo:image_alt_text

Como se puede ver en la siguiente captura de pantalla, cuando el usuario hace clic en el botón de comando personalizado, se agrega un texto en la celda A1 que dice “Mi botón de comando personalizado ha sido clickeado."

todo:image_alt_text

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Instantiating a CustomCommandButton object
CustomCommandButton button = new CustomCommandButton();
//Setting the command for button
button.setCommand("MyButton");
//Setting text of the button
button.setText("MyButton");
//Setting tooltip of the button
button.setToolTip("My Custom Command Button");
//Setting image URL of the button
button.setImageUrl("icon.png");
//Adding button to CustomCommandButtons collection of GridWeb
gridweb.getCustomCommandButtons().add(button);

Manejo de eventos del botón de comando personalizado

El siguiente código de ejemplo explica cómo realizar el manejo de eventos del botón de comando personalizado.

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Create custom command event handler to handle the click event
CustomCommandEventHandler cceh=new CustomCommandEventHandler(){
public void handleCellEvent(Object sender, String command){
//Identifying a specific button by checking its command
if (command.equals("MyButton"))
{
//Accessing the cells collection of the worksheet that is currently active
GridWorksheet sheet = gridweb.getWorkSheets().get(gridweb.getActiveSheetIndex());
//Putting value to "A1" cell
sheet.getCells().get("A1").putValue("My Custom Command Button is Clicked.");
sheet.getCells().setColumnWidth(0, 50);
}
}
};
//Assign the custom command event handler created above to gridweb
gridweb.CustomCommand = cceh;

Formato de celdas para GridWeb

Escenarios de uso posibles

GridWeb ahora admite que los usuarios ingresen datos de celda en formato de porcentaje, como 3%, y los datos en la celda se formatearán automáticamente como 3.00%. Sin embargo, deberás establecer el estilo de celda en Formato de Porcentaje, que es el GridTableItemStyle.NumberType 9 o 10. El número 9 formateará el 3% como 3%, pero el número 10 formateará el 3% como 3.00%.

Ingrese los datos de celda de la hoja de cálculo GridWeb en formato de porcentaje

El siguiente código de muestra establece el estilo de número de celda A1 GridTableItemStyle.NumberType como 10, por lo tanto, los datos de entrada 3% se formatean automáticamente como 3.00% como se muestra en la captura de pantalla.

todo:image_alt_text

Código de muestra

For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-Java
//Access cell A1 of first gridweb worksheet
GridCell cellA1 = gridweb.getWorkSheets().get(0).getCells().get("A1");
//Access cell style and set its number format to 10 which is a Percentage 0.00% format
GridTableItemStyle st = cellA1.getStyle();
st.setNumberType(10);
cellA1.setStyle(st);