目录
介绍
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欧