使用LibXL库,轻松读写Excel表格

本文介绍了如何使用LibXL库在C++中进行Excel文件的读写操作,包括生成工作表、写入数据、读取数据和插入图片。该库支持xls/xlsx格式,跨平台且无需依赖Excel。文章提供了详细配置教程和代码示例,同时也分享了获取免费许可证密钥的方法。
摘要由CSDN通过智能技术生成

目录

介绍

功能

性能

下载

配置

例子1: 生成工作表,并写入数据

例子2: 读数据

例子3: 插入图片

获取许可证密钥


介绍

        LibXl库不依赖Excel和NET框架可以读写Excel文件。 LibXl库可用于 C、C++、C#、PHP、Python等语言。支持 Excel 97-2003二进制格式(xls)、 Excel2007-2021 XML 格式(xlsx/xlsm),并且支持多个平台windows、Linux、Mac等。

功能

        LibXl库支持表格的创建、读取、编辑,支持多种格式选项:对齐、边框、颜色、填充模式、字体、合并单元格等。支持向表格中插入图片。

性能

        LibXl库可以轻松得将数据导入至Excel,或者从Excel中提取数据。性能相当可以,数字的写入速度约为每秒2100,000个单元,二进制xls格式的8字符随机字符串的写入速度约为每秒240000个单元。

下载

        LibXL库官网地址:C++ Excel Library to read/write xls/xlsx files - LibXL

        LibXL库下载地址:LibXL download

        LibXL库4.1.1下载地址: https://www.libxl.com/download/libxl-win-4.1.1.zip

(我们下载“Libxl for Windows 4.1.1”,并以c++为例介绍)

配置

 手动将下图的libxl.dll,复制到生成的动态链接库(*.dll)或者程序文件(*.exe)相同的文件夹。

例子1: 生成工作表,并写入数据

代码

#include <iostream>
#include <windows.h>
#include "libxl.h"

using namespace libxl;

//新建的表格文件名称
const wchar_t* filename = L"custom.xlsx";

int main() 
{	
    Book* book = xlCreateXMLBook();
    //book->setKey(输入key,文章最后送大家Libxl最新库4.4.1 的 KEY)

    if(book)
    {
        int f[6];

        f[0] = book->addCustomNumFormat(L"0.0");
        f[1] = book->addCustomNumFormat(L"0.00");
        f[2] = book->addCustomNumFormat(L"0.000");
        f[3] = book->addCustomNumFormat(L"0.0000");
        f[4] = book->addCustomNumFormat(L"#,###.00 $");
        f[5] = book->addCustomNumFormat(L"#,###.00 $[Black][<1000];#,###.00 $[Red][>=1000]");

        Format* format[6];
        for(int i = 0; i < 6; ++i) 
        {
            format[i] = book->addFormat();
            format[i]->setNumFormat(f[i]); //格式
        }

        Sheet* sheet = book->addSheet(L"Custom formats"); //新建sheet
        if(sheet)
        {
            sheet->setCol(0, 0, 20); //设置第一列到第一列的宽度为20
            sheet->writeNum(3, 0, 25.718, format[0]); //写入数据并设置格式  第3行第1列
            sheet->writeNum(4, 0, 25.718, format[1]); //写入数据并设置格式
            sheet->writeNum(5, 0, 25.718, format[2]); //写入数据并设置格式
            sheet->writeNum(6, 0, 25.718, format[3]); //写入数据并设置格式v

            sheet->writeNum(8, 0, 1800.5, format[4]);//写入数据并设置格式

            sheet->writeNum(10, 0, 500, format[5]); //写入数据并设置格式
            sheet->writeNum(11, 0, 1600, format[5]); //写入数据并设置格式

            sheet->writeStr(2, 0, L"王牌飞行员_里海");//写入字符串 第2行第1列
            sheet->writeNum(2, 1, 1000);//写入数据 第2行第2列
        }

        if(book->save(filename))
        {
            //打开表格文件
            ::ShellExecute(NULL, L"open", filename, NULL, NULL, SW_SHOW);
        }

        book->release();		
    } 
    	
    return 0;
}

例子2: 读数据

  代码

#include <iostream>
#include "libxl.h"

using namespace libxl;

const wchar_t* filename = L"F:\\example.xlsx";

int main() 
{
    Book* book = xlCreateXMLBook();
    //book->setKey(输入key,文章最后送大家Libxl最新库4.4.1 的 KEY)

    if(book)
    {
        if(book->load(filename))
        {
            Sheet* sheet = book->getSheet(0);
            if(sheet)
            {
                const wchar_t* s = sheet->readStr(2, 1);
                if(s) std::wcout << s << std::endl << std::endl;                
                
                std::cout << sheet->readNum(4, 1) << std::endl;
                std::cout << sheet->readNum(5, 1) << std::endl;
                const wchar_t* f = sheet->readFormula(6, 1);
                if(f) std::wcout << f << std::endl << std::endl;

                int year, month, day;
                book->dateUnpack(sheet->readNum(8, 1), &year, &month, &day);
                std::cout << year << "-" << month << "-" << day << std::endl;
            }
        }

        book->release();
    }

    return 0;
}

例子3: 插入图片

 代码

#include <iostream>
#include <windows.h>
#include "libxl.h"

using namespace libxl;

//新建的表格文件名称
const wchar_t* filename = L"custom.xlsx";

int main()
{
    Book* book = xlCreateXMLBook();
    //book->setKey(输入key,文章最后送大家Libxl最新库4.4.1 的 KEY)
    if (book)
    {
        Sheet* sheet = book->addSheet(L"addPictureSheet_lihai"); //新建sheet
        if (sheet)
        {
            int picID = book->addPicture(L"F:\\QQ3123197280图片.jpg");
            sheet->setPicture(2, 1, picID); //设置位置为底3行,第2列
        }

        if (book->save(filename))
        {
            //打开表格文件
            ::ShellExecute(NULL, L"open", filename, NULL, NULL, SW_SHOW);
        }

        book->release();
    }

    return 0;
}

获取许可证密钥

        使用此库需要注册,否则如果是写表格,它将在每个电子表格的第一行写一个横幅广告。

        如果是读表格,则它将只能读取300个单元格(第一行不可用)。购买许可证密钥,可以消除这个限制。199欧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王牌飞行员_里海

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值