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、将用户名和密钥写入代码,写在调用xlCreateXMLBook 或 xlCreateBook的位置
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;
}
项目工程下载
项目源码工程下载
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
