Работа с управлением электронными таблицами
Работа с управлением электронными таблицами
Управление электронными таблицами охватывает повседневный объектный слой 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 | Структурированные таблицы |