НейроАгент

Лучшие бесплатные C++ библиотеки для Excel на Windows

Откройте лучшие бесплатные C++ библиотеки для работы с Excel файлами на Windows. Подробное сравнение OpenXLSX, SimpleXlsxWriter и XlsxReaderWriter с примерами кода.

Вопрос

Какую бесплатную C++ библиотеку для работы с Excel на Windows вы посоветуете?

Мне нужна библиотека с открытым исходным кодом (желательно с лицензией GPL) для Windows, которая позволяет:

  • Чтение данных из ячеек Excel
  • Запись данных в ячейки Excel
  • Поддержку формул (если возможно)
НейроАгент

OpenXLSX - это лучшая бесплатная C++ библиотека для работы с Excel на Windows с открытым исходным кодом, которая поддерживает чтение и запись данных, а также работу с формулами. Эта библиотека активно разрабатывается, имеет хорошую документацию и подходит для большинства задач по манипуляции Excel файлами. Другие достойные варианты включают SimpleXlsxWriter и XlsxReaderWriter, которые также являются открытыми решениями с необходимой функциональностью.

Содержание

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

Для работы с Excel файлами в C++ на Windows я рекомендую OpenXLSX как основную библиотеку. Это полностью бесплатное решение с открытым исходным кодом, которое предоставляет все необходимые возможности:

  • Чтение данных из ячеек - позволяет извлекать значения и форматирование ячеек
  • Запись данных в ячейки - поддерживает запись различных типов данных
  • Поддержка формул - возможность работы с формулами Excel

Согласно исследованиям, OpenXLSX является наиболее развитой и активно поддерживаемой библиотекой в этой категории. Она использует современный подход к обработке Excel файлов через ZIP-архивы, что делает ее надежной и эффективной.


Подробное описание OpenXLSX

OpenXLSX представляет собой C++ библиотеку для чтения, записи, создания и модификации файлов Microsoft Excel (.xlsx). Эта библиотека имеет следующие ключевые особенности:

Основные возможности

  • Поддержка чтения и записи ячеек со значениями, форматированием и формулами
  • Работа с несколькими листами в одном файле
  • Поддержка стилей и форматирования ячеек
  • Возможность создания и удаления строк, столбцов
  • Экспорт данных в CSV и другие форматы

Лицензия

OpenXLSX распространяется под лицензией MIT, что позволяет свободное использование, модификацию и распространение кода. Хотя это не GPL, лицензия MIT считается очень свободной и подходит для большинства проектов.

Системные требования

  • Windows 7/8/10/11
  • C++11 и выше
  • Поддержка CMake для сборки проекта
  • Не требует установки Microsoft Excel

Альтернативные библиотеки

SimpleXlsxWriter

SimpleXlsxWriter - это еще одна отличная опция для создания XLSX файлов. Согласно источникам, SimpleXlsxWriter использует zlib лицензию и написан на C++ с использованием STL функциональности.

Преимущества:

  • Очень легкая и простая в использовании
  • Небольшие зависимости
  • Хорошо подходит для создания простых Excel файлов

Ограничения:

  • Основная функция - запись файлов, чтение поддерживается ограниченно
  • Меньше возможностей по работе с формулами

XlsxReaderWriter

XlsxReaderWriter - это open source C библиотека для работы с XLSX файлами. Как указано в источниках, она позволяет читать, записывать, объединять и редактировать .xlsx файлы.

Преимущества:

  • Поддержка нескольких листов
  • Работа с форматированием ячеек
  • Открытый исходный код

Ограничения:

  • Написана на C, что может быть менее удобно для C++ проектов
  • Меньшая документация по сравнению с OpenXLSX

Сравнение библиотек

Библиотека Лицензия Формулы Чтение Запись Сложность использования
OpenXLSX MIT Поддерживается Полное Полное Средняя
SimpleXlsxWriter zlib Ограниченная Основное Полное Низкая
XlsxReaderWriter Open Source Поддерживается Полное Полное Средняя
LibXL Commercial Полная Полное Полное Низкая

Как видно из таблицы, OpenXLSX предлагает наиболее сбалансированный набор возможностей с хорошей поддержкой формул и удобным API. Согласно исследованиям, именно эту библиотеку чаще всего рекомендуют для серьезных проектов.


Инструкция по установке

Установка OpenXLSX на Windows

  1. Клонирование репозитория
bash
git clone https://github.com/troldal/OpenXLSX.git
  1. Сборка с использованием CMake
bash
cd OpenXLSX
mkdir build
cd build
cmake ..
cmake --build . --config Release
  1. Добавление в проект Visual Studio
  • Скопируйте заголовочные файлы из include директории
  • Добавьте путь к заголовочным файлам в проект
  • Подключите библиотеку OpenXLSX.lib

Требуемые зависимости

  • CMake 3.10 или выше
  • C++11 compatible компилятор
  • Стандартная библиотека STL

Примеры использования

Базовый пример чтения Excel файла с OpenXLSX

cpp
#include <OpenXLSX.hpp>
#include <iostream>

int main() {
    try {
        // Открытие существующего Excel файла
        OpenXLSX::XLDocument doc;
        doc.open("example.xlsx");
        
        // Получение первого листа
        auto wks = doc.workbook().worksheet("Sheet1");
        
        // Чтение значения ячейки A1
        auto cell = wks.cell("A1");
        std::cout << "Значение A1: " << cell.value() << std::endl;
        
        // Чтение значения ячейки B2 (формула)
        auto formulaCell = wks.cell("B2");
        std::cout << "Формула B2: " << formulaCell.value() << std::endl;
        
        doc.close();
    } catch (const std::exception& e) {
        std::cerr << "Ошибка: " << e.what() << std::endl;
        return 1;
    }
    
    return 0;
}

Пример записи данных в Excel файл

cpp
#include <OpenXLSX.hpp>
#include <iostream>

int main() {
    try {
        // Создание нового Excel документа
        OpenXLSX::XLDocument doc;
        doc.create("new_file.xlsx");
        
        // Получение первого листа
        auto wks = doc.workbook().worksheet("Sheet1");
        
        // Запись данных в ячейки
        wks.cell("A1").value() = "Название";
        wks.cell("B1").value() = "Значение";
        wks.cell("A2").value() = "Продукт А";
        wks.cell("B2").value() = 100;
        
        // Запись формулы
        wks.cell("B3").value() = "=SUM(B2:B2)";
        
        // Сохранение и закрытие документа
        doc.save();
        doc.close();
    } catch (const std::exception& e) {
        std::cerr << "Ошибка: " << e.what() << std::endl;
        return 1;
    }
    
    return 0;
}

Работа с несколькими листами

cpp
// Создание нового листа
auto newSheet = doc.workbook().addWorksheet("НовыйЛист");

// Копирование данных между листами
auto sourceSheet = doc.workbook().worksheet("Sheet1");
auto targetSheet = doc.workbook().worksheet("НовыйЛист");

// Копирование ячейки A1 из одного листа в другой
targetSheet.cell("A1").value() = sourceSheet.cell("A1").value();

Заключение

Для работы с Excel файлами в C++ на Windows я однозначно рекомендую использовать OpenXLSX. Эта библиотека предоставляет все необходимые возможности:

  1. Полная поддержка чтения и записи - вы можете извлекать и записывать данные любых типов
  2. Работа с формулами - возможность как читать существующие формулы, так и создавать новые
  3. Открытый исходный код - полный доступ к коду и возможность модификации
  4. Активная разработка - регулярные обновления и исправления ошибок
  5. Хорошая документация - подробные примеры использования

Если вам нужна максимально простая библиотека для создания Excel файлов, рассмотрите SimpleXlsxWriter. Для более сложных задач с акцентом на чтение данных подойдут XlsxReaderWriter.

Все эти библиотеки являются бесплатными и открытыми, что делает их идеальными для использования в коммерческих и некоммерческих проектах без ограничений.

Источники

  1. OpenXLSX - GitHub Repository
  2. SimpleXlsxWriter - SourceForge
  3. XlsxReaderWriter Documentation
  4. C++ Library Recommendations - StackExchange
  5. LibXL Commercial Library
  6. OpenXLSX Product Description