НейроАгент

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

Откройте лучшие бесплатные библиотеки для работы с Excel на C++ в Windows. Узнайте про OpenXLSX с поддержкой формул и GPL лицензией. Полное руководство по установке и использованию.

Вопрос

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

Мне нужна библиотека, которая позволяет:

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

Предпочтительно, чтобы библиотека имела лицензию GPL.

НейроАгент

Лучшей бесплатной библиотекой для работы с Excel на C++ для Windows я бы посоветовал OpenXLSX. Это библиотека с открытым исходным кодом под лицензией GPL, которая обеспечивает полное чтение, запись и создание файлов Excel (.xlsx), включая поддержку формул. OpenXLSX является кроссплатформенным решением с активной разработкой и хорошей документацией.

Содержание

Что такое OpenXLSX

OpenXLSX — это библиотека C++ с открытым исходным кодом для чтения, записи, создания и модификации файлов Microsoft Excel (.xlsx). Как указано в документации проекта, эта библиотека была разработана для решения проблемы отсутствия зрелых open source библиотек для работы с Excel на C++.

Библиотека OpenXLSX обеспечивает поддержку нескольких важных функций, таких как создание, открытие и сохранение файлов электронных таблиц, чтение и запись данных.

Ключевые особенности:

  • Полностью бесплатная и open source
  • Лицензия GPL (General Public License)
  • Кроссплатформенная поддержка (Windows, Linux, macOS)
  • Работает с современным форматом .xlsx
  • Не требует установки Microsoft Excel

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

Поддержка чтения и записи данных

OpenXLSX предоставляет полный доступ к ячейкам Excel:

cpp
#include <OpenXLSX.hpp>

using namespace OpenXLSX;

int main() {
    // Открытие существующего файла Excel
    XLDocument doc;
    doc.open("example.xlsx");
    
    auto wks = doc.workbook().worksheet("Sheet1");
    
    // Чтение данных из ячеек
    auto cellValue = wks.cell("A1").value();
    std::cout << "Значение ячейки A1: " << cellValue << std::endl;
    
    // Запись данных в ячейки
    wks.cell("B1").value("Привет, мир!");
    wks.cell("C1").value(42);
    wks.cell("D1").value(3.14);
    
    doc.save();
    doc.close();
    return 0;
}

Поддержка формул

Библиотека поддерживает работу с формулами Excel:

cpp
// Установка формулы в ячейку
wks.cell("E1").value("=SUM(A1:D1)");

// Получение значения формулы
auto formulaResult = wks.cell("E1").value();
std::cout << "Результат формулы: " << formulaResult << std::endl;

Дополнительные возможности

  • Управление рабочими книгами и листами
  • Чтение и запись стилей форматирования
  • Работа с диапазонами ячеек
  • Поддержка различных типов данных (строки, числа, даты, логические значения)
  • Экспорт и импорт данных

Установка и настройка

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

  • C++17 или выше
  • CMake 3.15 или выше
  • Современный компилятор (MSVC 2019+, GCC 7+, Clang 6+)

Процесс установки

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

Пример CMakeLists.txt для вашего проекта:

cmake
cmake_minimum_required(VERSION 3.15)
project(MyExcelApp)

set(CMAKE_CXX_STANDARD 17)

# Добавление OpenXLSX
add_subdirectory(third_party/OpenXLSX)

# Создание вашего приложения
add_executable(myapp main.cpp)
target_link_libraries(myapp OpenXLSX)

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

Создание нового файла Excel

cpp
#include <OpenXLSX.hpp>

void createExcelFile() {
    // Создание нового документа
    XLDocument doc;
    doc.create("new_file.xlsx");
    
    // Получение рабочей книги и листа
    auto wks = doc.workbook().worksheet("Sheet1");
    
    // Запись заголовков
    wks.cell("A1").value("Товар");
    wks.cell("B1").value("Количество");
    wks.cell("C1").value("Цена");
    wks.cell("D1").value("Сумма");
    
    // Запись данных
    wks.cell("A2").value("Яблоки");
    wks.cell("B2").value(10);
    wks.cell("C2").value(50.0);
    wks.cell("D2").value("=B2*C2");
    
    wks.cell("A3").value("Апельсины");
    wks.cell("B3").value(15);
    wks.cell("C3").value(75.0);
    wks.cell("D3").value("=B3*C3");
    
    // Сохранение и закрытие
    doc.save();
    doc.close();
}

Чтение и обработка данных

cpp
void readExcelData() {
    XLDocument doc;
    doc.open("data.xlsx");
    
    auto wks = doc.workbook().worksheet("Sheet1");
    
    // Чтение количества строк
    auto lastRow = wks.rowCount();
    
    // Обработка данных
    for (XLRow row : wks.rows()) {
        auto productName = row.cell(1).value();
        auto quantity = row.cell(2).value();
        auto price = row.cell(3).value();
        
        std::cout << "Товар: " << productName 
                  << ", Количество: " << quantity 
                  << ", Цена: " << price << std::endl;
    }
    
    doc.close();
}

Альтернативные варианты

LibXL

LibXL — еще одна популярная библиотека для работы с Excel:

  • Плюсы:

    • Поддерживает форматы .xls и .xlsx
    • Высокая производительность
    • Простота использования
  • Минусы:

    • Не является полностью бесплатной - есть ограничения в бесплатной версии (до 300 операций одновременно)
    • Лицензия не GPL, а коммерческая
    • Первая строка не может быть прочитана или записана в бесплатной версии

Aspose.Cells for C++

Aspose.Cells — мощная коммерческая библиотека:

  • Плюсы:

    • Полная поддержка всех возможностей Excel
    • Отличная документация
    • Техническая поддержка
  • Минусы:

    • Платная - нет бесплатной версии
    • Лицензия не GPL

Ограничения и особенности

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

  • Полностью бесплатная под лицензией GPL
  • Открытый исходный код - можно модифицировать и адаптировать
  • Современный формат .xlsx поддержка
  • Кроссплатформенность - работает на Windows, Linux, macOS
  • Активная разработка - регулярные обновления

Текущие ограничения

  • Поддержка только формата .xlsx (не .xls)
  • Некоторые сложные функции Excel могут иметь ограниченную поддержку
  • Документация может быть не такой полной, как у коммерческих аналогов

Советы по использованию

  1. Начинайте с простых операций чтения/записи
  2. Используйте примеры из репозитория GitHub
  3. Следите за обновлениями библиотеки
  4. При возникновении проблем обращайтесь к issue tracker на GitHub

Заключение

OpenXLSX является наилучшим выбором для бесплатной работы с Excel на C++ на Windows, особенно когда важна лицензия GPL. Библиотека обеспечивает:

  1. Полноценное чтение и запись данных ячеек Excel
  2. Поддержку формул для вычислений
  3. Бесплатное использование без ограничений на количество операций
  4. Совместимость с современными версиями Excel
  5. Активное сообщество и разработку

Для большинства задач автоматизации Excel на C++ OpenXLSX предоставляет достаточный функционал, при оставаясь полностью бесплатным и open source решением.

Источники

  1. Библиотека C++ с открытым исходным кодом для электронных таблиц — чтение и запись файлов Excel
  2. GitHub - OpenXLSX: A C++ library for reading, writing, creating and modifying Microsoft Excel® (.xlsx) files
  3. C++ library to read Excel Spreadsheets - Software Recommendations Stack Exchange
  4. C++ Excel Library to read/write xls/xlsx files - LibXL
  5. Библиотека для работы с форматом Excel
  6. Создание файлов Excel на C++ | Создание диаграмм, формул, таблиц в файлах Excel