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

Excel 电子表格的开源 C 库

创建、编辑、操作和转换 Microsoft Excel 2007 和 XLSX 电子表格文件,合并电子表格,通过开源 C API 将图表添加到工作表。

Libxlsxwriter 是一个开源 C 库,可用于处理 Microsoft Excel 2007 以及您自己的应用程序中的 Excel XLSX 文件。 Libxlsxwriter 库与 Excel XLSX 文件非常兼容,允许开发人员轻松创建、修改和处理 XLSX 电子表格。该库可在 Linux、FreeBSD、OpenBSD、OS X、iOS 和 Windows 等领先平台上顺利运行。它可以编译为 32 位和 64 位。

开源的 Libxlsxwriter 库经过了很好的优化,可以正常处理大型电子表格文件。它包括对几个重要功能的支持,例如合并电子表格单元格、定义名称、自动过滤器支持、将图表添加到工作表页面、数据验证和下拉列表、添加 PNG/JPEG 图像、添加单元格注释、使用 VBA 宏,在工作表中添加或删除列,等等。

Previous Next

Libxlsxwriter 入门

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

通过 CRAN 安装 libxlsxwriter

 cmake $SOURCE_DIR $FLAGS 

从 GitHub 克隆 libxlsxwriter 源代码存储库。请使用以下代码。

通过 GitHub 安装 libxlsxwriter

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

C API 创建 Excel XLSX 电子表格

开源 Libxlsxwriter API 使软件开发人员能够在其 C 应用程序中创建和修改 Excel XLSX 电子表格。 API 支持将文本、数字、公式和超链接写入 Excel 电子表格文件中的多个工作表。您可以轻松地从 Excel 文件导入或导出数据,还可以合并或拆分工作表、搜索数据等。

通过CAPI创建Excel表格

#include "xlsxwriter.h"
int main() {
    /* Create a new workbook and add a worksheet. */
    lxw_workbook  *workbook  = workbook_new("demo.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
    /* Add a format. */
    lxw_format *format = workbook_add_format(workbook);
    /* Set the bold property for the format */
    format_set_bold(format);
    /* Change the column width for clarity. */
    worksheet_set_column(worksheet, 0, 0, 20, NULL);
    /* Write some simple text. */
    worksheet_write_string(worksheet, 0, 0, "Hello", NULL);
    /* Text with formatting. */
    worksheet_write_string(worksheet, 1, 0, "World", format);
    /* Write some numbers. */
    worksheet_write_number(worksheet, 2, 0, 123,     NULL);
    worksheet_write_number(worksheet, 3, 0, 123.456, NULL);
    /* Insert an image. */
    worksheet_insert_image(worksheet, 1, 2, "logo.png");
    workbook_close(workbook);
    return 0;
}

使用 Excel 图表

Libxlsxwriter API 提供了使用 C 命令向 Excel 电子表格添加和修改图表的功能。您可以使用图表标记功能来生成和管理图表。您还可以添加趋势线来指示数据中的趋势,并添加误差线来指示数据中的误差范围。您还可以将数据标签添加到图表系列以指示绘制的数据点的值。您可以轻松地将图表格式属性应用于任何图表对象。

通过Libxlsx作者创建Excel工作表图

#include "xlsxwriter.h"
int main() {
    lxw_workbook  *workbook  = new_workbook("chart.xlsx");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
    // User function to add data to worksheet, not shown here.
    write_worksheet_data(worksheet);
    // Create a chart object.
    lxw_chart *chart = workbook_add_chart(workbook, LXW_CHART_COLUMN);
    // In the simplest case we just add some value data series.
    // The NULL categories will default to 1 to 5 like in Excel.
    chart_add_series(chart, NULL, "=Sheet1!$A$1:$A$5");
    chart_add_series(chart, NULL, "=Sheet1!$B$1:$B$5");
    chart_add_series(chart, NULL, "=Sheet1!$C$1:$C$5");
    // Insert the chart into the worksheet
    worksheet_insert_chart(worksheet, CELL("B7"), chart);
    return workbook_close(workbook);
}

使用 Excel 数据验证

数据验证是一种 Excel 功能,可让开发人员控制用户在 Excel 单元格中输入的内容。例如,您可以限制用户输入 1 到 6 之间的数字,或确保单元格中的文本输入少于 25 个字符。 Libxlsxwriter API 提供了许多选项来验证用户输入,例如任何值、整数、小数、列表、日期、时间、文本长度或自定义公式。

如果不是b/t1和100、显示自定义消息

// Display a custom info message when integer isn't between 1 and 100.
data_validation->validate         = LXW_VALIDATION_TYPE_INTEGER;
data_validation->criteria         = LXW_VALIDATION_CRITERIA_BETWEEN;
data_validation->minimum_number   = 1;
data_validation->maximum_number   = 100;
data_validation->input_title      = "Enter an integer:";
data_validation->input_message    = "between 1 and 100";
data_validation->error_title      = "Input value is not valid!";
data_validation->error_message    = "It should be an integer between 1 and 100";

使用 VBA 宏

Libxlsxwriter API 使软件开发人员可以轻松地将包含函数或宏的 VBA 文件添加到 XLSX 工作簿。包含函数和宏的 Excel 文件应使用 XLSM 扩展名,否则 Excel 会报错并可能无法打开文件。 VBA 宏通常指的是工作簿和工作表对象。如果未明确指定 VBA 代号,则 libxlsxwriter 将使用 Excel 默认值 ThisWorkbook 和 Sheet1、Sheet2 等。

在C应用程序中添加BA马科斯

 
#include "xlsxwriter.h"
int main() {
    /* Note the xlsm extension of the filename */
    lxw_workbook  *workbook  = workbook_new("macro.xlsm");
    lxw_worksheet *worksheet = workbook_add_worksheet(workbook, NULL);
    worksheet_set_column(worksheet, COLS("A:A"), 30, NULL);
    /* Add a macro file extracted from an Excel workbook. */
    workbook_add_vba_project(workbook, "vbaProject.bin");
    worksheet_write_string(worksheet, 2, 0, "Press the button to say hello.", NULL);
    lxw_button_options options = {.caption = "Press Me", .macro = "say_hello",
                                  .width = 80, .height = 30};
     worksheet_insert_button(worksheet, 2, 1, &options);
    return workbook_close(workbook);
}
 中国人