Cómo crear un modelo Cells FOSS en Rust

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 build

Paso 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.

Ver también

 Español