Cómo crear un modelo Cells FOSS en Rust
Aspose.Cells FOSS para Rust modela un libro de trabajo como un árbol de objetos tipados — hojas de cálculo, colecciones de celdas y objetos de regla como validaciones. Esta guía construye un modelo de libro de trabajo completo desde cero: valores de celda tipados, reglas de validación de datos sobre rangos CellArea, y un archivo XLSX guardado al final.
Guía paso a paso
Paso 1: Instalar el paquete
Agrega la crate a tu Cargo.toml como una dependencia de Cargo git:
# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }Luego construye el proyecto:
cargo buildPaso 2: Importar clases requeridas
use aspose_cells_foss_rust::{
CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook,
};
use std::error::Error;Paso 3: Crear el libro de trabajo y los datos de celda
Inicie el modelo con un Workbook, nombre la hoja y escriba valores tipados:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Validation Sheet")?;
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Open")?;
cells.get("B2")?.put_value_i32(5)?;
cells.get("G1")?.put_value_string("ABCDE")?;
}Paso 4: Añadir una validación de lista
Las reglas de validación se adjuntan a los intervalos CellArea a través de la colección de validación de la hoja. Una validación de lista restringe las celdas a opciones fijas con un menú desplegable dentro de la celda:
let mut validations = sheet.get_validations();
let list_index = validations.add(CellArea::create_cell_area_a1("A1", "A3")?)?;
let mut list_validation = validations
.get(list_index)
.expect("validation should exist");
list_validation.set_type(ValidationType::List);
list_validation.set_formula1("\"Open,Closed\"");
list_validation.set_in_cell_drop_down(true);
list_validation.set_show_input(true);
list_validation.set_input_title("Status");
list_validation.set_input_message("Pick a status");Paso 5: Añadir reglas de intervalo y personalizadas
OperatorType genera reglas de intervalo numéricas, y ValidationType::Custom acepta una fórmula; ValidationAlertType selecciona la gravedad de la alerta:
let decimal_index = validations.add(CellArea::create_cell_area_a1("B2", "C3")?)?;
let mut decimal_validation = validations
.get(decimal_index)
.expect("validation should exist");
decimal_validation.set_type(ValidationType::Decimal);
decimal_validation.set_operator(OperatorType::Between);
decimal_validation.set_formula1("1.5");
decimal_validation.set_formula2("9.5");
decimal_validation.set_show_error(true);
let custom_index = validations.add(CellArea::create_cell_area_a1("G1", "G1")?)?;
let mut custom_validation = validations
.get(custom_index)
.expect("validation should exist");
custom_validation.set_type(ValidationType::Custom);
custom_validation.set_alert_style(ValidationAlertType::Warning);
custom_validation.set_formula1("LEN(G1)<=5");Paso 6: Guardar el modelo
workbook.save("validations-sample.xlsx")?;El archivo guardado se abre en Excel con los menús desplegables, verificaciones de rango y regla personalizada activas.
Problemas comunes y soluciones
La validación no tiene efecto visible en Excel. Activar los mensajes emergentes: set_show_input / set_show_error controlar si aparecen la pista de entrada y la alerta de error.
Una regla debe cubrir varios rangos separados. Agregar más rangos a una regla existente con add_area y adicional CellArea::create_cell_area_a1 rangos.
Reutilizar errores al agregar validaciones. Mantén el alcance del préstamo de la hoja de cálculo: fetch get_validations dentro del mismo bloque que las mutaciones, y guarda el workbook después de que el bloque termine.
Las opciones de List se interpretan incorrectamente como una fórmula. Envuelve las opciones entre comillas escapadas exactamente como se muestra: set_formula1("\"Open,Closed\"").
Preguntas frecuentes
¿Qué tipos de validación están disponibles?
ValidationType incluye List, Decimal y Custom como se muestra aquí — listas desplegables, rangos numéricos mediante OperatorType, y reglas basadas en fórmulas.
¿Pueden las validaciones mostrar mensajes personalizados?
Sí — set_input_title / set_input_message controlan la solicitud, y set_error_title / set_error_message controlan la alerta de error.
¿El modelo sobrevive a un viaje de ida y vuelta?
Sí. Guarde con Workbook::save y recargue con Workbook::load_xlsx; las reglas de validación se conservan en el archivo XLSX.