libxl库读取和写入excel文件

文章目录

  • 使用libxl库读写excel文件
    • 一、库下载
    • 二、复制到项目文件夹
    • 三、VS 环境配置
    • 四、Qt环境配置
    • 五、功能解密
    • 六、读取excel内容
    • 七、写入excel内容
    • 项目工程下载

使用libxl库读写excel文件

一、库下载

https://www.libxl.com/

二、复制到项目文件夹

解压,在文件里挑出三个东西:只需要复制include_cpp文件夹、lib64文件夹、libxl.dll文件(在下载的库 bin64文件夹里),至项目文件夹。

三、VS 环境配置

项目属性

  • C/C++ - 常规 - 附加包含目录:设置inclued_cpp文件夹的路径
  • 链接器 - 常规 - 附加库目录:设置lib64文件夹的路径
  • 链接器 - 输入 - 附加依赖项:填入“libxl.lib”。
  • libxl.dll复制到.exe文件路径下

四、Qt环境配置

.pro文件加入下面两句话:
LIBS += -L$$PWD -llibxl
INCLUDEPATH += $$PWD/include_cpp

其中,$$PWD 是一个Qt构建系统变量,它表示当前项目文件所在的路径。通过使用 $$PWD,可以确保正确地指定库文件的路径和包含路径。

五、功能解密

参考大佬-注册机下载地址
1、解压运行
2、随意输入用户名,生成密钥
3、将用户名和密钥写入代码,写在调用xlCreateXMLBookxlCreateBook的位置

	libxl::Book *book;if(excelPath.contains("xlsx")) {book = xlCreateXMLBook();}//xlCreateXMLBook  xlCreateBookelse  {book = xlCreateBook();}const wchar_t * x = L"11111";//用户名const wchar_t * y = L"windows-xxxxxxxxxxx";//密钥区book->setKey(x, y);  //设置key破解

六、读取excel内容

#include 
#include 
#include 
using namespace std;
#pragma comment(lib,"libxl.lib")int main() {const char * excelPath = "C:\\Users\\Admin\\Desktop\\LibXL_demo\\test.xls"; //路径libxl::Book* book;      std::string path(excelPath);if (path.find("xlsx") != std::string::npos) { book = xlCreateXMLBook(); }//xlCreateXMLBook-xlsx   xlCreateBook-xlselse { book = xlCreateBook(); }const char* x = "11111";const char* y = "windows-2b202b0a0ecee90d62b7696da3p4rfga";book->setKey(x, y);  //设置keyif (book->load(excelPath)) { // 加载Excel文件libxl::Sheet* sheet = book->getSheet(0); // 获取第一个工作表if (sheet) {int rowCount = sheet->lastRow(); // 获取行数int colCount = sheet->lastCol(); // 获取列数for (int row = 0; row <= rowCount; ++row) {for (int col = 0; col <= colCount; ++col) {libxl::CellType cellType = sheet->cellType(row, col); // 获取单元格类型if (cellType == libxl::CELLTYPE_NUMBER) {double value = sheet->readNum(row, col); // 读取数字类型单元格的值std::cout << value << "\t";}else if (cellType == libxl::CELLTYPE_STRING) {const char* value = sheet->readStr(row, col); // 读取字符串类型单元格的值std::cout << value << "\t";}else {std::cout << "\t"; // 对于其他类型的单元格,输出一个制表符}}std::cout << std::endl; // 换行}}book->release(); // 释放Book对象}return 0;
}

七、写入excel内容

#include 
#include "libxl.h"
#pragma comment(lib,"libxl.lib")
using namespace libxl;int main(){Book* book = xlCreateBook();                                //创建一个XLS文件,或者xlCreateXMLBook()-创建xlsx文件const char* x = "11111";const char* y = "windows-2b202b0a0ecee90d62b7696da3p4rfga";book->setKey(x, y);                                         //设置keyif (book){                                                  //是否加载Excel文件成功Sheet* sheet = book->addSheet("Sheet1");                //添加一个工作表if (sheet){sheet->writeStr(1, 1, "Hello, World !");            //在第二行 第二列(B列)的表格中写入字符串"Hello, World !"。程序中从0开始计数。第0行就是execl的第1行sheet->writeNum(2, 1, 1000);                        //在第三行 第二列(B列)的表格中写入数字 "1000"。sheet->writeNum(3, 1, 2000);Font* font = book->addFont();                       //创建一个字体对象font->setColor(COLOR_RED);                          //设置对象颜色font->setBold(true);                                //设置粗体Format* boldFormat = book->addFormat();             //设置字体格式指针boldFormat->setFont(font);                          //应用上面设置的字体sheet->writeFormula(6, 1, "SUM(B3:B4)", boldFormat); //用新的字体格式 在第七行 B列 写入 B3(第三行,第二列)+B4 的和Format* dateFormat = book->addFormat();dateFormat->setNumFormat(NUMFORMAT_DATE);//设置日期格式,依赖于你本机的设置sheet->writeNum(8, 1, book->datePack(2008, 4, 29), dateFormat);sheet->setCol(1, 1, 12);//设置列宽,格式等}if (book->save("C:\\Users\\Admin\\Desktop\\LibXL_demo\\example.xls")) {//保存到example.xlsstd::cout <<"完成" << std::endl;}else {std::cout << book->errorMessage() << std::endl;}book->release();    //释放Book对象}return 0;
}

项目工程下载

项目源码工程下载


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部