Робота з управлінням електронними таблицями
Робота з управлінням електронними таблицями
Керування електронними таблицями охоплює щоденний об’єктний інтерфейс crate: листи, колекції клітинок, типізовані значення, формули, стилізація та структурні можливості, які роблять робочий зошит придатним до використання. Точкою входу завжди є Workbook.
Worksheets
Листи керуються через колекції робочих листів у робочому зошиті — доступ для читання через get_worksheets, зміни — через get_worksheets_mut. Листи адресуються за індексом (get(0)) або назвою (get_by_name), перейменовуються за допомогою set_name і додаються за допомогою add_worksheet:
let mut workbook = Workbook::new();
{
let mut worksheets = workbook.get_worksheets_mut();
let sheet = worksheets.get(0)?;
sheet.set_name("Data")?;
}Доступ до клітинок та типізовані значення
Клітинки адресуються у стилі A1 або чисельно. get_by_index(row, column) підходить для згенерованих макетів:
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}"))?;
}При читанні назад, display_string_value повертає текст відображення, а value_type повідомляє збережений тип.
Формули з кешованими результатами
cells.get("F1")?.put_value_i32(10)?;
cells.get("G1")?
.put_formula_with_cached_value("=F1*2", CellValue::Number(20.0))?;Кешоване значення — це те, що Excel показує до першого перерахунку — надайте його, щоб користувачі файлу одразу бачили правильні результати.
Styling
CellStyle агрегує Font, Fill і Borders; StyleFlag контролює, які аспекти стилю застосовуються при оновленні, тож існуюче форматування зберігається там, де ви його не перевизначаєте. NumberFormat визначає, як відображаються значення.
Налаштування сторінки та навігація
PageSetup керує макетом друку: PaperSizeType, PageOrientationType та полями. FreezePane тримає рядки заголовків видимими під час прокручування, а видимість рядків і стовпців використовує VisibilityType.
Структура: таблиці, імена, коментарі, гіперпосилання
ListObjectперетворює діапазон у структуровану таблицю зTableStyleTypeоформленням таTotalsCalculationрядками підсумків.DefinedNameтаDefinedNameCollectionкерують іменованими діапазонами.Comment/CommentCollectionтаHyperlink/HyperlinkCollectionохоплюють анотацію та навігацію.
Поради та найкращі практики
- Тримайте змінювані запозичення (
get_worksheets_mut,get_cells_mut) всередині блоку області; збережіть робочий зошит після закриття блоку. - Використовуйте
get_by_indexдля циклів і згенерованих макетів; імена A1 для фіксованих позицій. - Застосовуйте стилі за допомогою
StyleFlag, щоб інше форматування залишалося незмінним. - Називайте важливі діапазони за допомогою
DefinedNameзамість жорсткого кодування адрес.
Поширені проблеми
| Проблема | Причина | Виправлення |
|---|---|---|
| Помилка запозичення під час збереження книги | Запозичення змінюваного листа все ще існує | Закрийте блок області перед викликом save |
| Формула показує 0 в Excel | Не вказано кешоване значення | Використовуйте put_formula_with_cached_value з очікуваним результатом |
| Лист не знайдено | Невідповідність імені | Адреса за індексом або перевірте правопис set_name |
FAQ
Як додати другий лист?
Викличте add_worksheet на робочій книзі, потім отримайте його через колекцію листів за індексом або назвою.
Чи можна читати і записувати в одному проході?
Так — завантажте за допомогою Workbook::load_xlsx, змінюйте через get_worksheets_mut та save у той самий або новий шлях.
Чи перетворюють типізовані сеттери значення?
Конверсії не застосовуються: кожен сеттер put_value_* зберігає свій рідний тип; display_string_value відображає текст під час читання.
API Reference Підсумок
| Клас/Метод | Опис |
|---|---|
Workbook.add_worksheet | Додайте лист до робочої книги |
Worksheet.set_name | Перейменувати лист |
Worksheet.get_cells_mut | Змінна колекція клітинок |
CellMut.put_value_string | Встановлювач типізованого рядка |
CellMut.put_formula_with_cached_value | Формула плюс кешований результат |
CellStyle | Форматування шрифту, заповнення та обводки |
StyleFlag | Вибирає, які аспекти стилю застосовуються |
PageSetup | Друк та розмітка сторінки |
ListObject | Структуровані таблиці |