C++ xlsx文件格式读写

测试
复制代码
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#ifndef _WIN32
#include <unistd.h>
#endif
#include "xlsxio_write.h"
#include "xlsxio_read.h"

int testWrite()
{
    const char* filename = "example.xlsx";
    xlsxiowriter handle;
    //open .xlsx file for writing (will overwrite if it already exists)
    if ((handle = xlsxiowrite_open(filename, "MySheet")) == NULL) {
        fprintf(stderr, "Error creating .xlsx file\n");
        return 1;
    }
    //set row height
    xlsxiowrite_set_row_height(handle, 1);
    //how many rows to buffer to detect column widths
    xlsxiowrite_set_detection_rows(handle, 10);
    //write column names
    xlsxiowrite_add_column(handle, "Col1", 0);
    xlsxiowrite_add_column(handle, "Col2", 21);
    xlsxiowrite_add_column(handle, "Col3", 0);
    xlsxiowrite_add_column(handle, "Col4", 2);
    xlsxiowrite_add_column(handle, "Col5", 0);
    xlsxiowrite_add_column(handle, "Col6", 0);
    xlsxiowrite_add_column(handle, "Col7", 0);
    xlsxiowrite_next_row(handle);
    //write data
    int i;
    for (i = 0; i < 1000; i++) {
        xlsxiowrite_add_cell_string(handle, "Test");
        xlsxiowrite_add_cell_string(handle, "A b  c   d    e     f\nnew line");
        xlsxiowrite_add_cell_string(handle, "&% <test> \"'");
        xlsxiowrite_add_cell_string(handle, NULL);
        xlsxiowrite_add_cell_int(handle, i);
        xlsxiowrite_add_cell_datetime(handle, time(NULL));
        xlsxiowrite_add_cell_float(handle, 3.1415926);
        xlsxiowrite_next_row(handle);
    }
    //close .xlsx file
    xlsxiowrite_close(handle);
    return 0;
}


//callback data structure for listing sheets
struct xlsx_list_sheets_data {
    char* firstsheet;
};

//callback function for listing sheets
int xlsx_list_sheets_callback(const char* name, void* callbackdata)
{
    struct xlsx_list_sheets_data* data = (struct xlsx_list_sheets_data*)callbackdata;
    if (!data->firstsheet)
        data->firstsheet = strdup(name);
    printf(" - %s\n", name);
    return 0;
}

//callback function for end of row
int sheet_row_callback(size_t row, size_t maxcol, void* callbackdata)
{
    printf("\n");
    return 0;
}

//callback function for cell data
int sheet_cell_callback(size_t row, size_t col, const XLSXIOCHAR* value, void* callbackdata)
{
    if (col > 1)
        printf("\t");
    if (value)
        printf("%s", value);
    return 0;
}

int testRead() {
    const char* filename = "example.xlsx";
    xlsxioreader xlsxioread;
    //open .xlsx file for reading
    if ((xlsxioread = xlsxioread_open(filename)) == NULL) {
        fprintf(stderr, "Error opening .xlsx file\n");
        return 1;
    }
    //list available sheets
    struct xlsx_list_sheets_data sheetdata;
    sheetdata.firstsheet = NULL;
    printf("Available sheets:\n");
    xlsxioread_list_sheets(xlsxioread, xlsx_list_sheets_callback, &sheetdata);

    //read data
    xlsxioread_process(xlsxioread, sheetdata.firstsheet, XLSXIOREAD_SKIP_EMPTY_ROWS, sheet_cell_callback, sheet_row_callback, NULL);

    //clean up
    free(sheetdata.firstsheet);
    xlsxioread_close(xlsxioread);
    return 0;
}

void test() {
    testWrite();    // 测试写入
    testRead();     // 测试读取
}
输出
文件结构
参考

GitHub - brechtsanders/xlsxio: XLSX I/O - C library for reading and writing .xlsx files

C++ PDF PoDoFo库使用教程-CSDN博客

C++ 导出CSV文件_c++导出cvs文件-CSDN博客


创作不易,小小的支持一下吧!

相关推荐
j7~10 分钟前
【Linux】二十八.线程篇五《Linux多线程编程:线程同步之条件变量》---详解
linux·运维·c++·学习·条件变量·线程同步
王老师青少年编程11 分钟前
2026年全国青少年信息素养大赛算法应用主题赛C++赛项【决赛】模拟卷3:文末附答案
c++·答案·模拟题·2026年·青少年信息素养大赛·算法应用主题赛·决赛
骇客野人14 分钟前
IntelliJ IDEA 菜单中英对照
java·ide·intellij-idea
我命由我1234515 分钟前
Kotlin 面向对象 - 枚举排序
android·java·开发语言·java-ee·kotlin·android studio·android-studio
程序喵大人17 分钟前
【C++进阶】STL容器与迭代器 - 10 把容器、迭代器和数据流串成一个小程序
开发语言·c++·容器·小程序·迭代器·stl
Sam_Deep_Thinking35 分钟前
用Java 17从0到1写一个mini版RPC,理解远程调用的本质
java·面试·rpc·程序员·系统架构
luj_176838 分钟前
随机性在算法与占卜中的共通原理
c语言·开发语言·c++·经验分享·算法
Lazionr1 小时前
vector初识——从动态数组到STL核心容器
开发语言·c++
yyds_yyd_100861 小时前
3731. 找出缺失的元素(2026.08.04)
c++·leetcode
敲代码的嘎仔1 小时前
从零搭建微服务:Spring Cloud Alibaba 全家桶踩坑实录(Nacos + OpenFeign + Gateway + Sentinel)
java·spring boot·spring·spring cloud·微服务·gateway·sentinel