Работа с Excel в Rust: библиотеки и примеры кода

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Работа с Excel в Rust: библиотеки и примеры кода

Язык Rust, известный своей производительностью и безопасностью, отлично подходит для обработки табличных данных. Если вам нужно читать, создавать или редактировать файлы Excel (форматы .xlsx, .xls), в экосистеме Rust есть несколько зрелых библиотек. В этой статье мы рассмотрим три основные: calamine (чтение), rust_xlsxwriter (запись) и xlsx (полный цикл). Вы узнаете, как их установить, и увидите рабочие примеры кода.

Библиотека calamine — чтение Excel файлов

calamine — это быстрая и легковесная библиотека для чтения файлов Excel (xlsx, xls, xlsb, ods). Она не требует установки внешних зависимостей и работает «из коробки». Поддерживает чтение ячеек, листов, формул и метаданных.

Установка

[dependencies]
calamine = "0.26"

Пример: чтение данных из файла

use calamine::{open_workbook, Reader, Xlsx};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    // Открываем файл
    let mut workbook: Xlsx<_> = open_workbook("data.xlsx")?;

    // Получаем лист по имени
    if let Some(Ok(range)) = workbook.worksheet_range("Sheet1") {
        for row in range.rows() {
            for cell in row {
                // Каждая ячейка — это DataType
                match cell {
                    calamine::Data::String(s) => print!("{} ", s),
                    calamine::Data::Float(f) => print!("{} ", f),
                    calamine::Data::Int(i) => print!("{} ", i),
                    _ => print!("? "),
                }
            }
            println!();
        }
    }

    Ok(())
}

Этот код открывает файл data.xlsx, читает лист Sheet1 и выводит все ячейки построчно. calamine автоматически определяет тип данных (строка, число, дата и т.д.).

Библиотека rust_xlsxwriter — создание и запись Excel

rust_xlsxwriter — это мощная библиотека для создания файлов xlsx. Она поддерживает форматирование, объединение ячеек, диаграммы, условное форматирование и многое другое. Это прямой аналог Python-библиотеки xlsxwriter.

Установка

[dependencies]
rust_xlsxwriter = "0.76"

Пример: создание простого отчёта

use rust_xlsxwriter::{Workbook, Format, Color};

fn main() -> Result<(), Box<dyn std::error::Error>> {
    let mut workbook = Workbook::new();

    // Создаём формат для заголовков
    let header_format = Format::new()
        .set_bold()
        .set_font_color(Color::White)
        .set_background_color(Color::Blue);

    // Добавляем лист
    let sheet = workbook.add_worksheet();

    // Записываем заголовки
    sheet.write_with_format(0, 0, "Имя", &header_format)?;
    sheet.write_with_format(0, 1, "Возраст", &header_format)?;
    sheet.write_with_format(0, 2, "Город", &header_format)?;

    // Записываем данные
    sheet.write(1, 0, "Анна")?;
    sheet.write(1, 1, 28)?;
    sheet.write(1, 2, "Москва")?;

    sheet.write(2, 0, "Иван")?;
    sheet.write(2, 1, 35)?;
    sheet.write(2, 2, "Санкт-Петербург")?;

    // Сохраняем в файл
    workbook.save("report.xlsx")?;

    println!("Файл report.xlsx успешно создан!");
    Ok(())
}

В этом примере мы создаём файл с форматированными заголовками (жирный текст, белый шрифт на синем фоне) и двумя строками данных. rust_xlsxwriter также поддерживает диаграммы, изображения и сводные таблицы.

Библиотека xlsx — полный цикл (чтение + запись)

xlsx — это универсальная библиотека, которая позволяет как читать, так и создавать файлы xlsx. Она менее популярна, чем calamine и rust_xlsxwriter, но может быть полезна, если вам нужен единый API для обеих операций.

Установка

[dependencies]
xlsx = "0.4"

Пример: чтение и изменение существующего файла

use xlsx::*;

fn main() -> Result<(), Box<dyn                    

Рекомендаций