Работа с управлением электронными таблицами

Работа с управлением электронными таблицами

Работа с управлением электронными таблицами

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

См. также:

 Русский