MFC-读写EXCEL
LibXL
LibXL可以不依赖EXCEL读取XLS和XLSX文件。包括设置对齐方式、字体、颜色等格式。支持C, C++, C#,Python等语言。并且支持多个平台windows、Linux、Mac等
下载:
链接:https://pan.baidu.com/s/1UL1sRYrkOXFXOFrszR9OEg
提取码:6666
重要文件介绍
bin 32位 动态链接库(需要将其放在可执行文件的目录)
bin64 64位 动态链接库
doc 函数说明的文档,用C++讲解的
examples 一些使用的例子,用C,C++,C#,python等语言的
include_c C的头文件
include_cpp C++的头文件
lib 32位微软Visual C++的库
lib64 64位微软Visual C++的库
net .NET使用的
stdcall 使用stdcall调用约定的32位动态库
设置
1.把include_cpp复制到工程文件夹下
2.包含目录和库目录
3.把libxl.lib复制到工程文件夹下
4.附加依赖项:libxl.lib
5.把libxl.dll复制到Debug下
6.Dlg.cpp下补充头文件与命名空间
#include "libxl.h"using namespace libxl;
基本代码
Book* book = xlCreateBook();//创建一个二进制格式的XLS的实例,返回该实例的指针 /* 如果失败则返回NULL,可以调用Book:errorMessage()查看错误信息 */ if (!book) { ExitProcess(0); } book->setKey(L"libxl", L"windows-xxxxxx");//注册 Book* book1 = xlCreateXMLBook();//创建一个XLSX格式的实例,返回该实例的指针 if (!book1) { ExitProcess(0); } book1->setKey(L"libxl", L"windows-xxxxxx");//注册 book1->load(_T("D:\\bb\\ex.xlsx")); //读取excel文件 Sheet* sheet1 = book1->addSheet(_T("测试写"));//添加表“测试写” if (!sheet1) { ExitProcess(0); } Sheet* sheet2 = book1->addSheet(_T("测试读")); if (!sheet2) { ExitProcess(0); } Sheet* sheet0= book1->getSheet(0);//获取指定序号的表 sheet1->writeStr(1, 2, _T("李明")); //在指定单元格输入文本 /* 参数1:指定行号 参数2:指定列号 参数3:文本 如果格式等于0,则格式将被忽略。字符串是内部复制的,在调用此方法后可以被销毁。如果发生错误返回false */ sheet1->writeNum(1, 1, 10.5);//在指定单元格写入数值 /* 参数1:指定行号 参数2:指定列号 参数3:数值 */ sheet1->writeNum(2, 1, 20); sheet1->writeNum(3, 1, 10); sheet1->writeNum(4, 1, 5); libxl::Font* font = book1->addFont();//创建一个字体对象 font->setSize(20); //字体大小 font->setColor(COLOR_BLUE); //颜色 /* COLOR_BLACK = 8, COLOR_WHITE, COLOR_RED, COLOR_BRIGHTGREEN, COLOR_BLUE, COLOR_YELLOW, COLOR_PINK, COLOR_TURQUOISE, COLOR_DARKRED, COLOR_GREEN, COLOR_DARKBLUE, COLOR_DARKYELLOW, COLOR_VIOLET, COLOR_TEAL, COLOR_GRAY25, COLOR_GRAY50, COLOR_PERIWINKLE_CF, COLOR_PLUM_CF, COLOR_IVORY_CF, COLOR_LIGHTTURQUOISE_CF, COLOR_DARKPURPLE_CF, COLOR_CORAL_CF, COLOR_OCEANBLUE_CF, COLOR_ICEBLUE_CF, COLOR_DARKBLUE_CL, COLOR_PINK_CL, COLOR_YELLOW_CL, COLOR_TURQUOISE_CL, COLOR_VIOLET_CL, COLOR_DARKRED_CL, COLOR_TEAL_CL, COLOR_BLUE_CL, COLOR_SKYBLUE, COLOR_LIGHTTURQUOISE, COLOR_LIGHTGREEN, COLOR_LIGHTYELLOW, COLOR_PALEBLUE, COLOR_ROSE, COLOR_LAVENDER, COLOR_TAN, COLOR_LIGHTBLUE, COLOR_AQUA, COLOR_LIME, COLOR_GOLD, COLOR_LIGHTORANGE, COLOR_ORANGE, COLOR_BLUEGRAY, COLOR_GRAY40, COLOR_DARKTEAL, COLOR_SEAGREEN, COLOR_DARKGREEN, COLOR_OLIVEGREEN, COLOR_BROWN, COLOR_PLUM, COLOR_INDIGO, COLOR_GRAY80, COLOR_DEFAULT_FOREGROUND = 0x0040, COLOR_DEFAULT_BACKGROUND = 0x0041, COLOR_TOOLTIP = 0x0051, COLOR_NONE = 0x7F, COLOR_AUTO = 0x7FFF */ font->setBold(true); //设置粗体 //font->setItalic(); //斜体 Format* StrFormat = book1->addFormat(); //创建格式 StrFormat->setFont(font); //应用上面设置的字体 sheet1->writeFormula(6, 1, _T("SUM(B2:B5)"), StrFormat); //用新的字体格式 在指定单元格输入和 /* 参数1和参数2:指定单元格 参数3:输入内容 可以是公式 参数4:格式 */ Format* dateFormat = book1->addFormat(); dateFormat->setNumFormat(NUMFORMAT_DATE);//设置日期格式,依赖于你本机的设置 sheet1->writeNum(1, 4, book1->datePack(2023, 6, 19), dateFormat);//用指定格式在指定单元格输入日期 /* 将数值或日期/时间写入指定格式的单元格中。如果格式等于0,则格式将被忽略。使用Book::datePack()设置日期格式,如果发生错误返回false */ sheet1->setCol(2, 3, 15);//设置列宽 /* 参数1:起始列 参数2:终止列 参数3:列宽 */ TCHAR* ph=new TCHAR[MAX_PATH]; Format* format = book1->addFormat(); book1->save(_T("D:\\bb\\ex1.xlsx")); book1->release();//释放对象
读取字符串和数值
Book* book1 = xlCreateXMLBook(); if (!book1) { ExitProcess(0); } //book1->setKey(L"libxl", L"windows-xxxxxx");//注册 book1->load(_T("D:\\bb\\ex1.xlsx")); //读取excel文件 Sheet* sheet1 = book1->getSheet(0);//获取指定序号的表 const wchar_t* pwstr; CString cstring; double num=0; if (sheet1) { pwstr = sheet1->readStr(1, 2);//读取字符串 /* 参数1:行 参数2:列 */ num= sheet1->readNum(1, 3);//读取数值 /* 参数1:行 参数2:列 */ cstring.Format(_T("%lf"), num); ::OutputDebugString(cstring); } book1->release(); ::ShellExecute(NULL, L"open", _T("D:\\bb\\ex1.xlsx"), NULL, NULL, SW_SHOW);//打开表格文件
数值样式
Book* book1 = xlCreateXMLBook(); if (!book1) { ExitProcess(0); } book1->setKey(L"libxl", L"windows-xxxxxx");//注册 book1->load(_T("D:\\bb\\ex1.xlsx")); //读取excel文件 Sheet* sheet1 = book1->getSheet(0);//获取指定序号的表 int f = book1->addCustomNumFormat(L"0.00");//数值样式 /* 小数点后面保留两位小数 */ Format* format= book1->addFormat(); format->setNumFormat(f); //添加数值样式 sheet1->writeNum(2, 3, 25.718, format); book1->save(_T("D:\\bb\\ex1.xlsx")); book1->release();
读取公式
Book* book1 = xlCreateXMLBook(); if (!book1) { ExitProcess(0); } book1->setKey(L"libxl", L"windows-xxxxxx");//注册 book1->load(_T("D:\\bb\\ex1.xlsx")); //读取excel文件 Sheet* sheet1 = book1->getSheet(0);//获取指定序号的表 const wchar_t* f = sheet1->readFormula(3, 3);//读取公式 /* 参数1:行 参数2:列 */ //book1->save(_T("D:\\bb\\ex1.xlsx")); book1->release();
读取日期
Book* book1 = xlCreateXMLBook(); if (!book1) { ExitProcess(0); } book1->setKey(L"libxl", L"windows-xxxxxx");//注册 book1->load(_T("D:\\bb\\ex1.xlsx")); //读取excel文件 Sheet* sheet1 = book1->getSheet(0);//获取指定序号的表 int year, month, day; book1->dateUnpack(sheet1->readNum(1, 4), &year, &month, &day);//读取日期 book1->save(_T("D:\\bb\\ex1.xlsx")); book1->release();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-06-16 pygame.mouse--鼠标
2020-06-16 激光宝盒laserbox