如何在 C++ 中加载电子表格
Aspose.Cells FOSS for C++ 允许您在无需 Microsoft Excel 的情况下加载和读取现有的 XLSX 电子表格。本指南将演示如何加载工作簿、访问工作表以及使用 Workbook、Worksheet 和 Cell 类读取单元格值。
分步指南
步骤 1:设置构建
将 Aspose.Cells FOSS for C++ 添加到您的 CMake 项目中:
cmake_minimum_required(VERSION 3.15)
project(LoadSpreadsheet CXX)
set(CMAKE_CXX_STANDARD 17)
add_subdirectory(path/to/Aspose.Cells-FOSS-for-Cpp)
add_executable(LoadSpreadsheet main.cpp)
target_link_libraries(LoadSpreadsheet PRIVATE Aspose.Cells.Foss.Cpp)步骤 2:包含必需的头文件
#include "aspose/cells_foss/Workbook.h"
#include "aspose/cells_foss/WorksheetCollection.h"
#include "aspose/cells_foss/Worksheet.h"
#include "aspose/cells_foss/Cell.h"
using namespace Aspose::Cells_FOSS;步骤 3:加载工作簿
将文件路径传递给 Workbook 构造函数以加载现有的 XLSX 文件:
int main() {
Workbook workbook("input.xlsx");
// workbook is now loaded and ready to use
return 0;
}步骤 4:访问工作表
使用 Workbook::GetWorksheets() 检索工作表集合,然后通过索引访问:
Worksheet& sheet = workbook.GetWorksheets()[0];
std::string name = sheet.GetName();步骤 5:读取单元格值
通过地址字符串访问单元格并读取其值:
std::string text = sheet.GetCells()["A1"].GetStringValue();
double number = sheet.GetCells()["B2"].GetValue().AsDouble();
bool flag = sheet.GetCells()["C3"].GetValue().AsBool();步骤 6:保存所有更改
进行修改后,将其保存回文件:
workbook.Save("output.xlsx");
workbook.Dispose();常见问题与解决方案
加载时文件未找到错误 验证文件路径是否正确且文件存在。如果工作目录不确定,请使用绝对路径。
对数值单元格返回空字符串 使用 GetValue().AsDouble() 而不是 GetStringValue() — GetStringValue() 对包含数字而非文本的单元格返回空字符串。
工作簿已加载,但单元格显示为空 确保 XLSX 文件未被密码保护。Aspose.Cells FOSS for C++ 不支持加密文件。
公式单元格返回意外的值 公式单元格存储的是公式字符串,而不是计算后的值。公式在文件打开时由 Excel 进行求值。使用 GetFormula() 来检索公式文本。
处理后内存未释放 Call workbook.Dispose() 在所有操作完成后释放非托管资源。
常见问题
我可以从单个文件加载多个工作表吗?
是的。使用 Workbook::GetWorksheets() 访问所有工作表并按索引遍历。调用 sheet.GetName() 按名称识别每个工作表。
我可以加载包含多个工作表的 XLSX 文件并从特定的工作表读取吗?
是的。通过从零开始的索引访问工作表:workbook.GetWorksheets()[1] 返回第二个工作表。
加载文件会触发公式重新计算吗?
不。库会按 XLSX 文件中存储的方式加载单元格值和公式字符串。公式重新计算在 Excel 或兼容的读取器打开文件时才会发生。
如果文件路径包含 Unicode 字符会怎样?
将路径作为 std::string 传递,并使用适合您平台的正确编码。UTF-8 路径在 Linux 和 macOS 上受支持。在 Windows 上,请确保路径编码与系统区域设置匹配。
同时多次加载同一个文件安全吗?
该库对同一 Workbook 实例的并发访问不是线程安全的。每个线程加载单独的 Workbook 实例。