2026/7/22 15:23:19

环境配置 2.1 库的获取与集成

环境配置 2.1 库的获取与集成 Spire.XLS for C 可通过右键项目引用 → 管理 NuGet 程序包搜索 Spire.XLS.Cpp 并安装。2.2 头文件引用使用该库时需要在源文件中包含主头文件#include “Spire.Xls.o.h”using namespace Spire::Xls;三、核心对象模型Spire.XLS for C 的对象模型遵循 Excel 文档的层次结构Workbook表示整个 Excel 工作簿是操作的顶层入口Worksheet表示工作簿中的单个工作表CellRange表示一个单元格或单元格区域用于读写数据和设置样式创建新工作簿并获取工作表的典型代码如下// 创建 Workbook 对象intrusive_ptr workbook new Workbook();// 获取第一个工作表索引从 0 开始intrusive_ptr sheet dynamic_pointer_cast(workbook-GetWorksheets()-Get(0));四、向单元格写入数据4.1 写入文本值使用 Worksheet-GetRange(int row, int column) 方法定位到指定单元格行号和列号均从 1 开始然后调用 CellRange-SetText() 方法写入文本// 定位到第1行第1列写入文本sheet-GetRange(1, 1)-SetText(L姓名);sheet-GetRange(1, 2)-SetText(L年龄);sheet-GetRange(1, 3)-SetText(L部门);4.2 写入数值写入数值使用 CellRange-SetNumberValue() 方法sheet-GetRange(2, 2)-SetNumberValue(29);sheet-GetRange(3, 2)-SetNumberValue(27);4.3 写入日期时间对于日期时间类型的数据可直接以文本形式写入并配合格式设置sheet-GetRange(2, 4)-SetText(L2021-02-26);// 设置日期格式sheet-GetRange(2, 4)-SetNumberFormat(Lyyyy-mm-dd);4.4 完整示例写入员工信息表以下代码演示了如何创建一个包含员工信息姓名、年龄、部门、入职日期的表格#include “Spire.Xls.o.h”using namespace Spire::Xls;int main() {// 指定输出文件路径std::wstring outputPath LOutput;std::wstring outputFile outputPath LEmployeeData.xlsx;// 创建 Workbook 对象intrusive_ptr workbook new Workbook();// 获取第一个工作表intrusive_ptr sheet dynamic_pointer_cast(workbook-GetWorksheets()-Get(0));// 写入表头sheet-GetRange(1, 1)-SetText(L姓名);sheet-GetRange(1, 2)-SetText(L年龄);sheet-GetRange(1, 3)-SetText(L部门);sheet-GetRange(1, 4)-SetText(L入职日期);// 写入数据行sheet-GetRange(2, 1)-SetText(LHazel);sheet-GetRange(2, 2)-SetNumberValue(29);sheet-GetRange(2, 3)-SetText(LMarketing);sheet-GetRange(2, 4)-SetText(L2021-02-26);sheet-GetRange(3, 1)-SetText(LTina);sheet-GetRange(3, 2)-SetNumberValue(27);sheet-GetRange(3, 3)-SetText(LHuman Resource);sheet-GetRange(3, 4)-SetText(L2020-07-13);sheet-GetRange(4, 1)-SetText(LAmy);sheet-GetRange(4, 2)-SetNumberValue(35);sheet-GetRange(4, 3)-SetText(LDevelopment);sheet-GetRange(4, 4)-SetText(L2019-04-01);// 保存工作簿workbook-SaveToFile(outputFile.c_str(), ExcelVersion::Version2013);workbook-Dispose();return 0;}五、批量写入数据当需要批量写入大量数据时逐单元格写入的效率较低。Spire.XLS for C 提供了 Worksheet-InsertArray() 方法可将 std::vector 中的数据一次性写入指定单元格范围。基本用法如下// 准备二维数据数组wstring twoDimensionalArray[4][3] {{ L区域, LQ1销售额, LQ2销售额 },{ L华东, L125000, L138000 },{ L华北, L98000, L105000 },{ L华南, L112000, L120000 }};// 获取行数列数int rowNum sizeof(twoDimensionalArray) / sizeof(twoDimensionalArray[0]);int columnNum sizeof(twoDimensionalArray[0]) / sizeof(twoDimensionalArray[0][0]);// 将二维数组拆分为多个一维向量for (size_t i 0; i rowNum; i){vector vec_temp;for (size_t j 0; j columnNum; j){vec_temp.push_back(twoDimensionalArray[i][j].c_str());}// 插入数组sheet-InsertArray(vec_temp, 4 i, 1, false);}六、注意事项索引约定行号和列号均从 1 开始计数与 Excel 界面保持一致。内存管理Workbook 和 Worksheet 对象使用完毕后应调用 Dispose() 方法释放资源。宽字符串所有文本参数需使用宽字符串类型L… 或 std::wstring因为库内部使用 Unicode 编码。文件格式保存时可通过 ExcelVersion 枚举指定输出格式支持 Version97to2003.