Praca z zarządzaniem arkuszami kalkulacyjnymi
Praca z zarządzaniem arkuszami kalkulacyjnymi
Zarządzanie arkuszami kalkulacyjnymi obejmuje codzienną powierzchnię obiektową crate: arkusze, kolekcje komórek, wartości typowane, formuły, stylizację oraz cechy strukturalne, które czynią skoroszyt użytecznym. Punktem wejścia jest zawsze Workbook.
Worksheets
Arkusze są zarządzane poprzez kolekcje arkuszy skoroszytu — odczyt za pomocą get_worksheets, modyfikacja za pomocą get_worksheets_mut. Arkusze są adresowane według indeksu (get(0)) lub nazwy (get_by_name), zmieniane nazwą przy użyciu set_name oraz dodawane przy użyciu add_worksheet:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Data")?;
}Dostęp do komórek i wartości typowane
Komórki są adresowane w stylu A1 lub numerycznie. get_by_index(row, column) pasuje do generowanych układów:
let mut cells = sheet.get_cells_mut();
cells.get("A1")?.put_value_string("Month")?;
for month in 1..=12_u32 {
cells
.get_by_index(month, 0)
.put_value_string(format!("Month {month}"))?;
}Odczytując, display_string_value zwraca tekst wyświetlany, a value_type raportuje przechowywany typ.
Formuły z buforowanymi wynikami
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;Wartość buforowana to to, co Excel wyświetla przed pierwszym przeliczeniem — podaj ją, aby odbiorcy pliku od razu widzieli prawidłowe wyniki.
Styling
CellStyle agreguje Font, Fill i Borders; StyleFlag kontroluje, które elementy stylu zostają zastosowane przy aktualizacji, tak aby istniejące formatowanie było zachowane tam, gdzie nie jest nadpisane. NumberFormat określa, jak wartości są renderowane.
Ustawienia strony i nawigacja
PageSetup zarządza układem wydruku: PaperSizeType, PageOrientationType oraz marginesami. FreezePane utrzymuje wiersze nagłówka widoczne podczas przewijania, a widoczność wierszy i kolumn wykorzystuje VisibilityType.
Struktura: Tabele, Nazwy, Komentarze, Hyperlinki
ListObjectzamienia zakres w tabelę strukturalną zTableStyleTypestylizacją iTotalsCalculationwierszami sum.DefinedNameiDefinedNameCollectionzarządzają nazwanymi zakresami.Comment/CommentCollectionorazHyperlink/HyperlinkCollectionobejmują adnotacje i nawigację.
Wskazówki i najlepsze praktyki
- Trzymaj mutable borrows (
get_worksheets_mut,get_cells_mut) wewnątrz bloku zakresu; zapisz skoroszyt po zamknięciu bloku. - Użyj
get_by_indexdo pętli i generowanych układów; nazwy A1 dla stałych pozycji. - Stosuj style za pomocą
StyleFlag, aby niepowiązane formatowanie pozostało nietknięte. - Nazwij ważne zakresy przy użyciu
DefinedNamezamiast twardego kodowania adresów.
Typowe problemy
| Problem | Przyczyna | Naprawa |
|---|---|---|
| Błąd borrow przy zapisywaniu workbook | Mutable worksheet borrow wciąż aktywny | Zamknij blok zakresu przed wywołaniem save |
| Formuła wyświetla 0 w Excel | Nie podano wartości w pamięci podręcznej | Użyj put_formula_with_cached_value z oczekiwanym wynikiem |
| Nie znaleziono arkusza | Niezgodność nazwy | Adresuj po indeksie lub sprawdź pisownię set_name |
FAQ
Jak dodać drugi arkusz?
Wywołaj add_worksheet na skoroszycie, a następnie pobierz go z kolekcji arkuszy według indeksu lub nazwy.
Czy mogę czytać i zapisywać w jednym przebiegu?
Tak — wczytaj przy użyciu Workbook::load_xlsx, zmień poprzez get_worksheets_mut i save do tej samej lub nowej ścieżki.
Czy typowane settery konwertują wartości?
Nie stosuje się żadnych konwersji: każdy setter put_value_* przechowuje swój natywny typ; display_string_value wyświetla tekst wyświetlany przy odczycie.
API Reference Podsumowanie
| Klasa/Metoda | Opis |
|---|---|
Workbook.add_worksheet | Dodaj arkusz do skoroszytu |
Worksheet.set_name | Zmień nazwę arkusza |
Worksheet.get_cells_mut | Modyfikowalna kolekcja komórek |
CellMut.put_value_string | Ustawiający typowany ciąg znaków |
CellMut.put_formula_with_cached_value | Formuła plus wynik z pamięci podręcznej |
CellStyle | Czcionka, wypełnienie i formatowanie obramowania |
StyleFlag | Wybiera, które elementy stylu mają zastosowanie |
PageSetup | Druk i układ strony |
ListObject | Strukturalne tabele |