Implementación de la función de enlace de datos de GridDesktop en hojas de cálculo
Creación de una base de datos de ejemplo
- Cree una base de datos de ejemplo para usar con el ejemplo. Utilizamos Microsoft Access para crear una base de datos de ejemplo con una tabla de Productos (esquema a continuación).
- Se agregan tres filas ficticias a la tabla de Productos. Registros en la tabla de Productos
Crear una aplicación de ejemplo
Ahora cree una aplicación de escritorio sencilla en Visual Studio y haga lo siguiente.
- Arrastre el control “GridControl” desde el cuadro de herramientas y suéltelo en el formulario.
- Suelte cuatro botones desde el cuadro de herramientas en la parte inferior del formulario y establezca su propiedad de texto como Vincular hoja de cálculo, Agregar fila, Eliminar fila y Actualizar a base de datos respectivamente.
Agregar espacios de nombres y declarar variables globales
Debido a que este ejemplo utiliza una base de datos de Microsoft Access, agregue el espacio de nombres System.Data.OleDb en la parte superior del código.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Adding namespace to the top of code | |
using System.Data.OleDb; |
Ahora puede usar las clases empaquetadas bajo este espacio de nombres.
- Declare variables globales.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Declaring global variable | |
OleDbDataAdapter adapter; | |
OleDbCommandBuilder cb; | |
DataSet ds; |
Llenando DataSet con datos de la base de datos
Ahora conectarse a la base de datos de muestra para buscar y llenar datos en un objeto DataSet.
- Utilice el objeto OleDbDataAdapter para conectarse con nuestra base de datos de muestra y llenar un DataSet con datos extraídos de la tabla Products en la base de datos, como se muestra en el código a continuación.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
private void DataBindingFeatures_Load(object sender, EventArgs e) | |
{ | |
// The path to the documents directory. | |
string dataDir = Utils.GetDataDir(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType); | |
// Creating Select query to fetch data from database | |
string query = "SELECT * FROM Products ORDER BY ProductID"; | |
// Creating connection string to connect with database | |
string conStr = @"Provider=microsoft.jet.oledb.4.0;Data Source=" + dataDir + "dbDatabase.mdb"; | |
// Creating OleDbDataAdapter object that will be responsible to open/close connections with database, fetch data and fill DataSet with data | |
adapter = new OleDbDataAdapter(query, conStr); | |
// Setting MissingSchemaAction to AddWithKey for getting necesssary primary key information of the tables | |
adapter.MissingSchemaAction = MissingSchemaAction.AddWithKey; | |
/* | |
* Creating OleDbCommandBuilder object to create insert/delete SQL commmands | |
* automatically that are used by OleDbDatAdapter object for updating | |
* changes to the database | |
*/ | |
cb = new OleDbCommandBuilder(adapter); | |
// Creating DataSet object | |
ds = new DataSet(); | |
// Filling DataSet with data fetched by OleDbDataAdapter object | |
adapter.Fill(ds, "Products"); | |
} |
Vinculando Hoja de cálculo con DataSet
Vincular la hoja de cálculo con la tabla Products del DataSet:
- Acceda a una hoja de cálculo deseada.
- Vincule la hoja de cálculo con la tabla Products del DataSet.
Agregue el siguiente código al evento click del botón Vincular Hoja de cálculo.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing the worksheet of the Grid that is currently active | |
Worksheet sheet = gridDesktop1.GetActiveWorksheet(); | |
// Binding the Worksheet to Products table by calling its DataBind method | |
sheet.DataBind(ds.Tables["Products"], ""); |
Configurando Encabezados de Columna de la Hoja de cálculo
La hoja de cálculo vinculada ahora carga datos correctamente, pero los encabezados de columna están etiquetados por defecto como A, B y C. Sería mejor configurar los encabezados de columna con los nombres de columna en la tabla de la base de datos.
Para configurar los encabezados de columna de la hoja de cálculo:
- Obtenga los títulos para cada columna del DataTable (Products) en el DataSet.
- Asigne los títulos a los encabezados de las columnas de la hoja de cálculo.
Agregue el código escrito en el evento click del botón Vincular Hoja de cálculo con el siguiente fragmento de código. Al hacer esto, los antiguos encabezados de columna (A, B y C) serán reemplazados por ProductID, ProductName y ProductPrice.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Iterating through all columns of the Products table in DataSet | |
for (int i = 0; i < ds.Tables["Products"].Columns.Count; i++) | |
{ | |
// Setting the column header of each column to the column caption of Products table | |
sheet.Columns[i].Header = ds.Tables["Products"].Columns[i].Caption; | |
} |
Personalizando el Ancho y Estilos de las Columnas
Para mejorar el aspecto de la hoja de cálculo aún más, es posible establecer el ancho y estilos de las columnas. Por ejemplo, a veces, el encabezado de columna o el valor dentro de la columna consiste en un gran número de caracteres que no caben dentro de la celda. Para solucionar tales problemas, Aspose.Cells.GridDesktop admite el cambio de los anchos de las columnas.
Agregue el siguiente código al botón Vincular Hoja de cálculo. Los anchos de las columnas se personalizarán de acuerdo con la nueva configuración.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Customizing the widths of columns of the worksheet | |
sheet.Columns[0].Width = 70; | |
sheet.Columns[1].Width = 120; | |
sheet.Columns[2].Width = 80; |
Aspose.Cells.GridDesktop también admite la aplicación de estilos personalizados a las columnas. El siguiente código, agregado al botón Vincular Hoja de cálculo, personaliza los estilos de las columnas para hacerlos más presentables.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Iterating through each column of the worksheet | |
for (int i = 0; i < sheet.ColumnsCount; i++) | |
{ | |
// Getting the style object of each column | |
Style style = sheet.Columns[i].GetStyle(); | |
// Setting the color of each column to Yellow | |
style.Color = Color.Yellow; | |
// Setting the Horizontal Alignment of each column to Centered | |
style.HAlignment = HorizontalAlignmentType.Centred; | |
// Setting the style of column to the updated one | |
sheet.Columns[i].SetStyle(style); | |
} |
Ahora ejecute la aplicación y haga clic en el botón Vincular Hoja de cálculo.
Añadiendo Filas
Para agregar nuevas filas a una hoja de cálculo, use el método AddRow de la clase Worksheet. Esto agrega una fila vacía en la parte inferior y se agrega un nuevo DataRow a la fuente de datos (aquí, se agrega un nuevo DataRow a la DataTable del DataSet). Los desarrolladores pueden agregar tantas filas como quieran llamando al método AddRow una y otra vez. Una vez que se ha agregado una fila, los usuarios pueden ingresar valores en ella.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Adding new row to the worksheet | |
gridDesktop1.GetActiveWorksheet().AddRow(); |
Eliminación de Filas
Aspose.Cells.GridDesktop también admite la eliminación de filas mediante el método RemoveRow de la clase Worksheet. Para eliminar una fila usando Aspose.Cells.GridDesktop, se requiere el índice de la fila a eliminar.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Getting the index of the focused row | |
int focusedRowIndex = gridDesktop1.GetActiveWorksheet().GetFocusedCell().Row; | |
// Removing the focused row fro the worksheet | |
gridDesktop1.GetActiveWorksheet().RemoveRow(focusedRowIndex); |
Agregue el código anterior al botón Eliminar fila y ejecute la aplicación. Aparecen algunos registros antes de que se elimine la fila. Seleccionar una fila y hacer clic en el botón Eliminar fila elimina la fila seleccionada.
Guardar cambios en la base de datos
Finalmente, para guardar cualquier cambio realizado por los usuarios en la hoja de cálculo de vuelta a la base de datos, use el método Update del objeto OleDbDataAdapter. El método Update toma la fuente de datos (DataSet, DataTable, etc.) de la hoja de cálculo para actualizar la base de datos.
// For complete examples and data files, please go to https://github.com/aspose-cells/Aspose.Cells-for-.NET | |
// Accessing the worksheet of the Grid that is currently active | |
Worksheet sheet = gridDesktop1.GetActiveWorksheet(); | |
// Updating the database according to worksheet data source | |
adapter.Update((DataTable)sheet.DataSource); |
- Agregue el código anterior al botón Actualizar en la base de datos.
- Ejecute la aplicación.
- Realice algunas operaciones en los datos de la hoja de cálculo, quizás agregando nuevas filas y editando o eliminando datos existentes.
- Luego haga clic en Actualizar en la base de datos para guardar los cambios en la base de datos.
- Revise la base de datos para ver que los registros de la tabla se hayan actualizado en consecuencia.