如何在 C++ 中创建和填充电子表格数据模型

如何在 C++ 中创建和填充电子表格数据模型

本指南展示了如何使用 Aspose.Cells C++ 开源库创建工作簿、使用数值和公式填充单元格、应用样式,并将其保存为电子表格文件。涉及的核心类有 Workbook、Worksheet、Cell 和 Style。

分步指南

步骤 1:设置构建

将 Cells 开源库添加到你的 CMake 项目并链接 Aspose.Cells.Foss.Cpp 目标:

cmake_minimum_required(VERSION 3.15)
project(CreateSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)

add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(CreateSpreadsheet main.cpp)
target_link_libraries(CreateSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)

步骤 2:包含头文件并设置命名空间

为你使用的每个类(Workbook.h、Worksheet.h、Cell.h、Style.h、Font.h、Color.h、CellArea.h)包含来自 aspose/cells_foss/ 的按类头文件,然后打开 Aspose::Cells_FOSS 命名空间:

using namespace Aspose::Cells_FOSS;

步骤 3:创建工作簿并命名工作表

实例化 Workbook,通过 GetWorksheets()[0] 获取第一个工作表,并设置其显示名称:

int main() {
    Workbook workbook;
    Worksheet& sheet = workbook.GetWorksheets()[0];
    sheet.SetName("Sales");
    return 0;
}

步骤 4:添加单元格值

调用 GetCells()["A1"].PutValue() 将文本字符串、数值和布尔值写入按地址定位的各个单元格:

sheet.GetCells()["A1"].PutValue("Product");
sheet.GetCells()["B1"].PutValue("Price");
sheet.GetCells()["A2"].PutValue("Widget");
sheet.GetCells()["B2"].PutValue(9.99);
sheet.GetCells()["A3"].PutValue("Gadget");
sheet.GetCells()["B3"].PutValue(24.99);

步骤 5:设置公式

在单元格上调用 SetFormula() 存储 Excel 兼容的公式字符串;该公式在打开文件时由 Excel 进行计算:

sheet.GetCells()["B4"].SetFormula("=SUM(B2:B3)");

步骤 6:应用单元格样式

使用 Cell::GetStyle() 获取样式,进行修改,然后用 Cell::SetStyle(style) 应用:

Style headerStyle = sheet.GetCells()["A1"].GetStyle();
Font font;
font.SetBold(true);
font.SetColor(Color::FromArgb(255, 255, 255, 255));
headerStyle.SetFont(font);
headerStyle.SetPattern(FillPattern::Solid);
headerStyle.SetForegroundColor(Color::FromArgb(255, 34, 120, 212));
sheet.GetCells()["A1"].SetStyle(headerStyle);
sheet.GetCells()["B1"].SetStyle(headerStyle);

第7步:合并单元格

使用 Cells::Merge 将范围合并为单个单元格:

CellArea titleArea = CellArea::CreateCellArea("A1", "B1");
sheet.GetCells().Merge(0, 0, 1, 2);

第8步:保存工作簿

使用文件名调用 workbook.Save() 将电子表格写入 XLSX 文件,然后调用 Dispose() 释放资源:

workbook.Save("sales.xlsx");
workbook.Dispose();

常见问题及解决方案

保存后样式未生效 始终调用 Cell::SetStyle(style) 在修改 style 对象后。直接修改返回的 style 不会生效;必须显式地重新设置回去。

公式以字符串字面量存储 使用 SetFormula("=SUM(...)") not PutValue("=SUM(...)"). PutValue 将参数视为字面字符串,而不是公式。

合并单元格未正确渲染 确保合并参数(row、column、rowCount、columnCount)正确覆盖目标范围。不支持重叠合并。

工作簿在构建后没有工作表 默认工作表总是由 Workbook(). 调用 GetWorksheets()[0] 以访问它。

未调用 Dispose 始终调用 workbook.Dispose() 以释放资源,尤其是在长时间运行的应用程序中。

常见问题

我可以在一个工作簿中添加多个工作表吗?

可以。使用 Workbook::GetWorksheets() 访问集合并以编程方式添加工作表。使用 Workbook::EnsureUniqueSheetName() 确保每个工作表拥有唯一名称。

如何为单元格设置数字格式?

在调用 Cell::SetStyle(style) 之前使用 Style::SetNumberFormat(format)。格式字符串遵循标准的 Excel 数字格式语法。

我可以将相同的样式应用于多个单元格吗?

是的。先获取一次样式,进行修改,然后在每个目标单元格上调用 SetStyle(style)。

保存时会对公式进行求值吗?

不会。公式求值在 Excel 或兼容的读取器打开文件时进行。库仅将公式字符串写入单元格。

工作表最多可以容纳多少行和列?

每个工作表在其完整的行列网格中保存数据,遵循标准电子表格尺寸。

另请参阅

 中文