Jak utworzyć model Cells FOSS w Rust
Aspose.Cells FOSS dla Rust modeluje skoroszyt jako drzewo typowanych obiektów — arkusze, kolekcje komórek i obiekty reguł, takie jak walidacje. Ten przewodnik buduje kompletny model skoroszytu od podstaw: typowane wartości komórek, reguły walidacji danych nad zakresem CellArea, oraz zapisany plik XLSX na końcu.
Przewodnik krok po kroku
Krok 1: Zainstaluj pakiet
Dodaj crate do swojego Cargo.toml jako zależność Cargo git:
# Cargo.toml
[dependencies]
aspose-cells-foss-rust = { git = "https://github.com/aspose-cells-foss/Aspose.Cells-FOSS-for-Rust" }Następnie zbuduj projekt:
cargo buildKrok 2: Importuj wymagane klasy
use aspose_cells_foss_rust::{
CellArea, OperatorType, ValidationAlertType, ValidationType, Workbook,
};
use std::error::Error;Krok 3: Utwórz skoroszyt i dane komórek
Rozpocznij model za pomocą Workbook, nazwij arkusz i zapisz wartości typowane:
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")?;
}Krok 4: Dodaj walidację listy
Reguły walidacji są dołączane do zakresów CellArea poprzez kolekcję walidacji arkusza. Walidacja listy ogranicza komórki do stałych wyborów przy użyciu rozwijanego menu w komórce:
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");Krok 5: Dodaj reguły zakresu i niestandardowe
OperatorType steruje regułami zakresu liczbowego, a ValidationType::Custom przyjmuje formułę; ValidationAlertType wybiera poziom nasilenia alertu:
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");Krok 6: Zapisz model
workbook.save("validations-sample.xlsx")?;Zapisany plik otwiera się w Excelu z rozwijanymi listami, sprawdzaniem zakresów i aktywną regułą niestandardową.
Typowe problemy i rozwiązania
Walidacja nie ma widocznego efektu w programie Excel. Włącz podpowiedzi: set_show_input / set_show_error kontroluj, czy podpowiedź wprowadzania i alert błędu się pojawiają.
Reguła powinna obejmować kilka oddzielnych zakresów. Dodaj więcej zakresów do istniejącej reguły przy pomocy add_area oraz dodatkowe CellArea::create_cell_area_a1 zakresy.
Pożyczaj błędy podczas dodawania walidacji. Utrzymaj pożyczkę arkusza w zakresie: fetch get_validations wewnątrz tego samego bloku co mutacje i zapisz skoroszyt po zakończeniu bloku.
Wybory listy są odczytywane jako formuła. Zawijaj wybory w ucieczkowe cudzysłowy dokładnie tak, jak pokazano: set_formula1("\"Open,Closed\"").
Najczęściej zadawane pytania
Jakie typy walidacji są dostępne?
ValidationType zawiera List, Decimal i Custom, jak pokazano tutaj — listy rozwijane, zakresy liczbowe za pomocą OperatorType oraz reguły oparte na formułach.
Czy walidacje mogą wyświetlać niestandardowe komunikaty?
Tak — set_input_title / set_input_message kontrolują podpowiedź, a set_error_title / set_error_message kontrolują alert o niepowodzeniu.
Czy model przetrwa pełny cykl?
Tak. Zapisz przy użyciu Workbook::save i wczytaj ponownie przy użyciu Workbook::load_xlsx; reguły walidacji są zachowane w pliku XLSX.