网站公司介绍模板,织梦网站wap,可以免费发帖的网站,html5营销网站建设功能
表格不存在则创建后再进行操作创建sheet添加新的工作表在sheet中增加数据设置单元格样式
相关配置
下载地址#xff1a;libxl选择 LibXL for Linux 4.2.0 i386 x64 armhf aarch64
安装配置
1#xff0c;使用 tar zxvf 文件名.tar.gz 进行文件解压2#xff0c;创…功能
表格不存在则创建后再进行操作创建sheet添加新的工作表在sheet中增加数据设置单元格样式
相关配置
下载地址libxl选择 LibXL for Linux 4.2.0 i386 x64 armhf aarch64
安装配置
1使用 tar zxvf 文件名.tar.gz 进行文件解压2创建 /usr/local/libxl/lib64目录将libxl\libxl-4.2.0\lib64文件夹下的libxl.so库文件拷贝到刚才创建的目录下3创建 /usr/local/include/libxl目录将libxl\libxl-4.2.0\include_cpp文件夹下的头文件拷贝到刚才创建的目录下
Clion配置
cmake_minimum_required(VERSION 3.23)
project(libxl_test)set(CMAKE_CXX_STANDARD 11)# 指定lib目录
link_directories(/usr/local/libxl/lib64)# 指定头文件搜索策略
include_directories(/usr/local/include/libxl)add_executable(libxl_test main.cpp)target_link_libraries(${PROJECT_NAME} xl z)# g -o ExcelOutputProgram ExcelOutputProgram.cpp -lxl -lz
代码
#include iostream
#include ctime
#include chrono
#include fstream
#include libxl/libxl.h#define filename /home/chy-cpabe/CLionProjects/libxl_test/output.xlsxbool fileExists(const std::string excel_file) {std::ifstream file(excel_file);return file.good(); // 如果文件存在file.good() 返回 true
}/*** brief 填写表格内容** param USBKey_info Book handle* param sheet sheet handle* param DEVINFO_SerialNumber USBKey序列号* param Signing_Certificate_SerialNumber 签名证书序列号* return 0成功-1失败*/
int write_excel_content(libxl::Book *USBKey_info,libxl::Sheet *sheet,std::string DEVINFO_SerialNumber,std::string Signing_Certificate_SerialNumber)
{// 插入相关字段信息int nextRowIndex sheet-lastRow();// 确定下一个可用的行索引sheet-writeStr(nextRowIndex, 0, DEVINFO_SerialNumber.c_str());sheet-writeStr(nextRowIndex, 1,Signing_Certificate_SerialNumber.c_str());// 获取当前系统时间auto now std::chrono::system_clock::now();// 将系统时间转化为 time_t 样式std::time_t currentTime std::chrono::system_clock::to_time_t(now);// 将time_t转化为tm结构体std::tm *localTime std::localtime(currentTime);// 提取年月日等时间信息int year localTime-tm_year 1900; // Years since 1900int month localTime-tm_mon 1; // Months start from 0int day localTime-tm_mday;int hour localTime-tm_hour;int minute localTime-tm_min;// 设置格式 (每列列宽30并居中显示) 并填充数据libxl::Format* format2 USBKey_info-addFormat();format2-setNumFormat(libxl::NUMFORMAT_CUSTOM_MDYYYY_HMM);format2-setAlignH(libxl::ALIGNH_CENTER);sheet-writeNum(nextRowIndex, 2, USBKey_info-datePack(year,month,day,hour,minute),format2);}/*** brief 填写Excel表格** param increase_sheet 是否增加工作表* param sheetName_new 如果increase_sheet为true,接收工作表的名字* param DEVINFO_SerialNumber USBKey序列号* param Signing_Certificate_SerialNumber 签名证书序列号* return 0成功-1失败*/
int write_excel(bool increase_sheet,std::string sheetName_new,std::string DEVINFO_SerialNumber,std::string Signing_Certificate_SerialNumber){libxl::Book *USBKey_info xlCreateXMLBook();//Excel文件是否存在if (!fileExists(filename)) {// 创建Excel 文件if (USBKey_info-save(filename)) {std::cout excel表格创建成功! std::endl;} else {std::cout excel表格创建失败! std::endl;}}//创建表格USBKey_info-load(filename);//增加sheetif (increase_sheet true){// 添加新的工作表并命名libxl::Sheet *sheet USBKey_info-addSheet(sheetName_new.c_str());if (sheet) {//表格样式处理 (每列列宽30并居中显示)libxl::Format* centerAlign USBKey_info-addFormat();centerAlign-setAlignH(libxl::ALIGNH_CENTER);sheet-setCol(0, 2, 30, centerAlign);// 创建工作表的标题sheet-writeStr(1, 0, DEVINFO SerialNumber);sheet-writeStr(1, 1, Signing Certificate SerialNumber);sheet-writeStr(1, 2, Date);// 插入相关字段信息write_excel_content(USBKey_info, sheet,DEVINFO_SerialNumber,Signing_Certificate_SerialNumber);} else{std::cerr 新增 使用用户指定名称创建sheet的索引失败! std::endl;return false;}}else{//利旧 获取最后一个sheet的索引int sheetCount USBKey_info-sheetCount()-1;libxl::Sheet *sheet USBKey_info-getSheet(sheetCount);if (sheet){// 插入相关字段信息write_excel_content(USBKey_info, sheet,DEVINFO_SerialNumber,Signing_Certificate_SerialNumber);} else{std::cerr 利旧 获取最后一个sheet的索引失败! std::endl;return false;}}// 保存 Excel 文件if (USBKey_info-save(filename)) {std::cout Excel 文件成功保存 std::endl;} else {std::cout Excel 文件保存失败 std::endl;}// 释放资源USBKey_info-release();return 0;
}int main() {printf(请输入要创建的工作表名称\n);std::string sheetName; // 用户输入的工作表名称std::cin sheetName; // 接收用户输入的工作表名称std::string DEVINFO_SerialNumber{00FF4821104E2607};std::string Signing_Certificate_SerialNumber{4495};//测试1: 文件不存在新建,强制删除文件即可write_excel(true,sheetName,DEVINFO_SerialNumber,Signing_Certificate_SerialNumber);//测试2: 文件存在//sheet新建write_excel(true,new1,DEVINFO_SerialNumber,Signing_Certificate_SerialNumber);//sheet追加write_excel(false,new,DEVINFO_SerialNumber,Signing_Certificate_SerialNumber);return 0;
}
结果展示 注意 sheet新建需要保证每个sheet的name是不一样的重名会出错 //测试2: 文件存在//sheet新建write_excel(true,new1,DEVINFO_SerialNumber,Signing_Certificate_SerialNumber);