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();
复制代码

 

 

 

 

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(788)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2020-06-16 pygame.mouse--鼠标
2020-06-16 激光宝盒laserbox
点击右上角即可分享
微信分享提示

目录导航