Come creare un modello Cells FOSS in Rust
Aspose.Cells FOSS per Rust modella una cartella di lavoro come un albero di oggetti tipizzati — fogli di lavoro, raccolte di celle e oggetti regola come le convalide. Questa guida costruisce un modello completo di cartella di lavoro da zero: valori di cella tipizzati, regole di convalida dei dati su intervalli CellArea, e un file XLSX salvato alla fine.
Guida passo-passo
Passo 1: Installa il pacchetto
Aggiungi il crate al tuo Cargo.toml come dipendenza git di Cargo:
# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }Quindi compila il progetto:
cargo buildPasso 2: Importa le classi necessarie
use aspose_cells_foss_rust::{
CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook,
};
use std::error::Error;Passo 3: Crea la cartella di lavoro e i dati delle celle
Avvia il modello con un Workbook, assegna un nome al foglio e scrivi valori tipizzati:
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")?;
}Passo 4: Aggiungi una convalida a elenco
Le regole di convalida si collegano a intervalli CellArea tramite la collezione di convalide del foglio. Una convalida a elenco limita le celle a scelte fisse con un menu a discesa nella cella:
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");Passo 5: Aggiungi regole di intervallo e personalizzate
OperatorType gestisce le regole di intervallo numerico, e ValidationType::Custom accetta una formula; ValidationAlertType seleziona la gravità dell’avviso:
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");Passo 6: Salva il modello
workbook.save("validations-sample.xlsx")?;Il file salvato si apre in Excel con i menu a discesa, i controlli di intervallo e la regola personalizzata attiva.
Problemi comuni e soluzioni
La convalida non ha alcun effetto visibile in Excel. Abilita i prompt: set_show_input / set_show_error controlla se il suggerimento di input e l’avviso di errore vengono visualizzati.
Una regola dovrebbe coprire diversi intervalli separati. Aggiungi più intervalli a una regola esistente con add_area e aggiuntivi CellArea::create_cell_area_a1 intervalli.
Eredita errori durante l’aggiunta di convalide. Mantieni il prestito del foglio di lavoro limitato: fetch get_validations all’interno dello stesso blocco delle mutazioni, e salva il workbook dopo la fine del blocco.
Le scelte della lista vengono interpretate erroneamente come una formula. Racchiudi le scelte tra virgolette escape esattamente come mostrato: set_formula1("\"Open,Closed\"").
Domande frequenti
Quali tipi di convalida sono disponibili?
ValidationType include List, Decimal e Custom come mostrato qui — elenchi a discesa, intervalli numerici tramite OperatorType e regole basate su formule.
Le convalide possono mostrare messaggi personalizzati?
Sì — set_input_title / set_input_message controllano il prompt, e set_error_title / set_error_message controllano l’avviso di errore.
Il modello sopravvive a un round-trip?
Sì. Salva con Workbook::save e ricarica con Workbook::load_xlsx; le regole di convalida sono conservate nel file XLSX.