Библиотека C с открытым исходным кодом для чтения файлов Excel XLS

Легковесная и быстрая бесплатная библиотека C с открытым исходным кодом для загрузки, чтения и извлечения данных из файлов Excel XLS без необходимости использования Microsoft Excel.

Что такое libxls?

Работа с файлами Microsoft Excel является распространённой задачей во многих программных приложениях. Хотя современные таблицы используют формат XLSX, множество организаций всё ещё полагаются на устаревшие файлы XLS. Чтение и извлечение данных из этих файлов может быть сложным, поскольку бинарный формат XLS является проприетарным и сложным. libxls — это открытая C‑библиотека, специально разработанная для упрощения этой задачи. Она предоставляет быстрое и лёгкое решение для чтения файлов Excel 97–2003 XLS без необходимости использовать Microsoft Excel или какие‑либо внешние компоненты Office.

libxls — это переносимая библиотека на C, позволяющая разработчикам читать и извлекать информацию из электронных таблиц Microsoft Excel XLS. Она поддерживает файлы Excel 97–2003 (.xls), несколько листов, значения ячеек и информацию о форматировании, Unicode‑текст, извлечение дат и чисел, кроссплатформенную разработку и многое другое. В отличие от подходов автоматизации офисных приложений, libxls работает независимо от Microsoft Office, что делает её подходящей для Linux, macOS, Windows и встроенных систем. Благодаря простоте, переносимости и высокой производительности libxls широко используется в инструментах миграции данных, конвертерах таблиц, приложениях для отчетности и кроссплатформенных программных проектах.

Previous Next

Начало работы с libxls

libxls поддерживает CMake для сборки и установки библиотеки. Пожалуйста, используйте следующую команду.

Установить libxls через CRAN

 mkdir build
cd build

cmake ..
make
 

Клонируйте репозиторий исходного кода libxls с GitHub. Пожалуйста, используйте следующий код.

Установить libxls через GitHub

 git clone https://github.com/libxls/libxls.git
# Or use your preferred protocol instead of https 

Чтение устаревших файлов Excel XLS с помощью библиотеки C

Одним из главных преимуществ libxls является его способность разбирать двоичные файлы Excel 97–2003 формата XLS. Библиотека понимает внутреннюю структуру этих электронных таблиц и позволяет приложениям получать доступ к строкам, столбцам и значениям ячеек без необходимости использовать Microsoft Excel. Эта возможность особенно полезна для организаций, которые всё ещё архивируют исторические данные в формате XLS. Разработчики могут легко создавать инструменты импорта и автоматизировать процессы извлечения данных, сохраняя совместимость со старыми документами. В следующем примере открывается рабочая книга Excel XLS с использованием кодировки UTF-8. После загрузки рабочей книги разработчики могут получать доступ к листам и извлекать данные таблицы.

Как читать файлы Excel XLS с помощью библиотеки C

#include 

int main()
{
    xlsWorkBook *workbook;
    workbook = xls_open("sample.xls", "UTF-8");

    if(workbook)
    {
        printf("Workbook opened successfully\n");
        xls_close_WB(workbook);
    }

    return 0;
}

Доступ к нескольким листам с помощью библиотеки C

Во многих файлах Excel содержится несколько листов, которые организуют информацию в разных разделах. libxls предоставляет API для навигации и чтения каждого листа независимо. Эта функция полезна при обработке финансовых отчётов, счетов‑фактур, инвентарных листов или научных наборов данных. Разработчики могут перебрать все листы и автоматически извлекать информацию без вмешательства пользователя. В следующем коде открывается рабочая книга и определяется общее количество листов, доступных в файле.

Как получить общее количество листов в файле XLS с помощью C?

#include 

int main()
{
    xlsWorkBook *wb = xls_open("report.xls", "UTF-8");

    if(wb)
    {
        printf("Number of sheets: %d\n", wb->sheets.count);

        xls_close_WB(wb);
    }

    return 0;
}

Чтение значений ячеек с помощью библиотеки C

Открытая библиотека libxls позволяет приложениям получать доступ к отдельным ячейкам и извлекать их содержимое. Независимо от того, содержит ли таблица текст, числа или даты, библиотека обеспечивает простой доступ к информации о ячейках. Эта возможность делает libxls подходящей для импорта данных таблиц в базы данных, создания отчетов или преобразования Excel‑документов в форматы CSV и JSON. Ниже приведён пример кода, который читает первую ячейку листа и выводит её значение в консоль.

Как получить доступ к ячейкам листа и вывести их значение с помощью библиотеки C?

#include 

int main()
{
    xlsWorkBook *wb = xls_open("sample.xls", "UTF-8");

    if(wb)
    {
        xlsWorkSheet *sheet = xls_getWorkSheet(wb, 0);
        xls_parseWorkSheet(sheet);

        xlsCell *cell = xls_cell(sheet, 0, 0);

        if(cell)
            printf("Cell value: %s\n", cell->str);

        xls_close_WS(sheet);
        xls_close_WB(wb);
    }

    return 0;
}

Поддержка Unicode и кодировок символов

Современные приложения часто работают с многоязычными таблицами. libxls поддерживает Unicode‑текст через настраиваемые кодировки символов, что позволяет обрабатывать файлы, содержащие международные языки и специальные символы. Эта функция особенно полезна для бизнес‑приложений, работающих с именами клиентов, адресами и отчетами на разных языках. Указывая кодировку UTF-8, библиотека правильно интерпретирует Unicode‑текст, хранящийся в файлах Excel, как показано в следующем примере кода.

Как интерпретировать Unicode‑текст, хранящийся в файлах Excel, с помощью C?

 
xlsWorkBook *wb = xls_open("employees.xls", "UTF-8");

if(wb)
{
    printf("Workbook loaded using UTF-8 encoding\n");
}

 Русский