1. 产品
  2.   电子表格
  3.   C++
  4.   libxls
 
  

开源 C 库,用于读取 Excel XLS 文件

一款轻量且快速的开源免费 C 库,用于加载、读取和提取 Excel XLS 文件中的数据,无需 Microsoft Excel。

什么是 libxls?

在许多软件应用中,处理 Microsoft Excel 文件是常见需求。虽然现代电子表格使用 XLSX 格式,但仍有大量组织依赖传统的 XLS 文件。读取和提取这些文件中的数据可能具有挑战性,因为二进制 XLS 格式是专有且复杂的。libxls 是一个专为简化此任务而设计的开源 C 库。它提供了一种快速且轻量的解决方案,可在不需要 Microsoft Excel 或任何外部 Office 组件的情况下读取 Excel 97–2003 XLS 文件。

libxls 是一个可移植的 C 库,使开发者能够读取和提取 Microsoft Excel XLS 电子表格中的信息。它支持 Excel 97–2003(.xls)文件、多工作表、单元格值和格式信息、Unicode 文本、日期和数字提取、跨平台开发等。不同于办公自动化方法,libxls 独立于 Microsoft Office 工作,使其适用于 Linux、macOS、Windows 和嵌入式环境。由于其简洁、可移植性和性能,libxls 被广泛用于数据迁移工具、电子表格转换器、报告应用程序以及跨平台软件项目。

Previous Next

libxls 入门指南

libxls 支持使用 CMake 构建和安装库。请使用以下命令。

通过 CRAN 安装 libxls

 mkdir build
cd build

cmake ..
make
 

从 GitHub 克隆 libxls 源代码仓库。请使用以下代码。

通过 GitHub 安装 libxls

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

通过 C 库读取传统 Excel XLS 文件

libxls 最大的优势之一是能够解析 Excel 97–2003 二进制 XLS 文件。该库了解这些电子表格的内部结构,允许应用程序在不需要 Microsoft Excel 的情况下访问行、列和单元格的值。此功能对于仍然以 XLS 格式存档历史数据的组织尤为有用。开发者可以轻松构建导入工具并自动化数据提取过程,同时保持对旧文档的兼容性。下面的示例使用 UTF-8 编码打开一个 Excel XLS 工作簿。工作簿加载后,开发者可以访问工作表并提取电子表格数据。

如何通过 C 库读取 Excel XLS 文件

#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。该功能在处理财务报告、发票、库存表或科学数据集时非常有用。开发者可以遍历所有工作表并自动提取信息,无需用户干预。下面的代码打开一个工作簿并获取文件中可用工作表的总数。

如何通过 C 获取 XLS 文件中工作表的总数?

#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 编码,库能够正确解释 Excel 文件中存储的 Unicode 文本,如以下代码示例所示。

如何通过 C 解释存储在 Excel 文件中的 Unicode 文本?

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

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

 中国人