Como criar um modelo Cells FOSS em Rust
Aspose.Cells FOSS para Rust modela um arquivo de planilha como uma árvore de objetos tipados — planilhas, coleções de células e objetos de regras, como validações. Este guia cria um modelo completo de arquivo de planilha a partir do zero: valores de célula tipados, regras de validação de dados sobre intervalos CellArea, e um arquivo XLSX salvo ao final.
Guia Passo a Passo
Passo 1: Instalar o Pacote
Adicione o crate ao seu Cargo.toml como uma dependência Cargo git:
# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }Em seguida, compile o projeto:
cargo buildEtapa 2: Importar as classes necessárias
use aspose_cells_foss_rust::{
CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook,
};
use std::error::Error;Etapa 3: Criar a pasta de trabalho e os dados das células
Inicie o modelo com um Workbook, nomeie a planilha e escreva 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")?;
}Etapa 4: Adicionar uma validação de lista
Regras de validação são associadas a intervalos CellArea por meio da coleção de validação da planilha. Uma validação de lista restringe as células a opções fixas com um menu suspenso dentro da célula:
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");Etapa 5: Adicionar regras de intervalo e personalizadas
OperatorType gera regras de intervalo numérico, e ValidationType::Custom aceita uma fórmula; ValidationAlertType seleciona a gravidade do 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");Etapa 6: Salvar o modelo
workbook.save("validations-sample.xlsx")?;O arquivo salvo abre no Excel com as listas suspensas, verificações de intervalo e a regra personalizada ativada.
Problemas Comuns e Soluções
A validação não tem efeito visível no Excel. Ativar os prompts: set_show_input / set_show_error controlar se a dica de entrada e o alerta de erro aparecem.
Uma regra deve cobrir várias faixas separadas. Adicionar mais faixas a uma regra existente com add_area e adicional CellArea::create_cell_area_a1 faixas.
Emprestar erros ao adicionar validações. Mantenha o empréstimo da planilha limitado ao escopo: buscar get_validations dentro do mesmo bloco das mutações e salve a pasta de trabalho após o término do bloco.
As opções da lista são interpretadas erroneamente como uma fórmula. Envolva as opções entre aspas escapadas exatamente como mostrado: set_formula1("\"Open,Closed\"").
Perguntas Frequentes
Quais tipos de validação estão disponíveis?
ValidationType inclui List, Decimal e Custom conforme mostrado aqui — listas suspensas, intervalos numéricos via OperatorType e regras baseadas em fórmula.
As validações podem exibir mensagens personalizadas?
Sim — set_input_title / set_input_message controlam o prompt, e set_error_title / set_error_message controlam o alerta de falha.
O modelo sobrevive a uma ida e volta?
Sim. Salve com Workbook::save e recarregue com Workbook::load_xlsx; as regras de validação são preservadas no arquivo XLSX.