当前位置: 首页 > wzjs >正文

ps在线图片编辑天津seo

ps在线图片编辑,天津seo,小程序个人开发全过程,网站内容吸引怎么做才好🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…
  • 🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用
  • 🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】
  • 🍅 玩转CANoe,博客目录大全,点击跳转👉

目录

  • 📙 OpenXLSX库简介
  • 📙 DLL中的函数解读
    • 📙 读取表格指定表单的行列数
    • 📙 读/写单元格数据
    • 📙 读/写 行数据
    • 📙 读/写 列数据
  • 📙 保存与关闭
  • 📙 源码获取

🍅 背景:CAPL语言的简陋,同学们是有目共睹的,本身不支持解析xlsx表格文件的,奈何工程应用中,输入文件经常是xlsx格式,绕个弯的解决办法是,将xlsx文件转为csv文件,然后用capl解析csv文件,但是这种方法有点麻烦,这篇文件将基于C++公开库OpenXLSX库,封装一个可以在CAPL脚本中使用的DLL。


📙 OpenXLSX库简介

以下简介来自百度百科,OpenXLSX 是一个开源的 C++ 库,用于读取、创建和修改 Excel 文件(.xlsx 格式)。该库基于现代 C++ 标准(C++17),旨在提供一个简单、直观且高效的接口,使开发者能够轻松地在 C++ 项目中处理 Excel 文件。

主要特性:

  • 跨平台支持:OpenXLSX 支持在 Windows、Linux 和 macOS 平台上运行,确保了广泛的适用性。
  • 轻量级:该库设计简洁,依赖性少,适合嵌入到各种 C++ 项目中。
  • 高效:OpenXLSX 通过优化的内存管理和文件操作,提供了高效的 Excel 文件处理能力。
  • 易用性:提供了直观的 API,使开发者能够快速上手并实现复杂的 Excel 操作。

功能:

  • 读取和写入单元格数据:支持读取和写入字符串、数字、布尔值等多种数据类型。
  • 工作表管理:支持添加、删除和重命名工作表。
  • 单元格格式:支持设置单元格的格式,如字体、颜色、对齐方式等。
  • 文件保存和加载:支持将修改后的 Excel 文件保存到磁盘,以及从磁盘加载现有的 Excel 文件。

📙 DLL中的函数解读

open_xlsx_demo_win64.dll文件中有如下图中的函数,实现对xlsx文件的读写

在这里插入图片描述


这里注意CANoe的内核版本选择,如果是64bit RT Kernel ,则CAPL中只能使用X64版本的DLL,否则使用X86版本的DLL

在这里插入图片描述

📙 读取表格指定表单的行列数

  • dll_Excel_Open(const char* filename, const char* sheetName, char* error_info) :打开表格,函数执行成功,返回值为1,否则为0。该函数的返回值如果为0则表示打开失败,否则表示打开成功。

    • filename : 文件路径。
    • sheetName:表单的名称
    • error_info:如果表格打开失败,通过该参数返回错误日志信息
  • dll_Excel_Get_Sheet_Dimensions(long* rowCount, long* colCount):该函数返回表单的行数和列数,执行成功返回值为1,否则为0

    • rowCount : 表格行数。
    • colCount: 表格列数。
  • 注意

    • const MAX_SIZE = 2000; //必须为2000,和dll中定义的MAX_SIZE保持一致
    • char Data[1000][MAX_SIZE];:读取表格整行或者整列数据时,要保证传入的数组大小比实际的行列数要大,否则会产生访问越界等错误导致的DLL崩溃。
/*@!Encoding:65001*/includes
{#if X64#pragma library("..\..\OpenXLSX_Demo_Win64\x64\Debug\open_xlsx_demo_win64.dll")#else#pragma library("..\..\OpenXLSX_Demo_Win32\Debug\open_xlsx_demo_win32.dll")#endif
}on key '1'
{ const MAX_SIZE = 2000; //必须为2000,和dll中定义的MAX_SIZE保持一致。char cell_data[MAX_SIZE];char Data[1000][MAX_SIZE];char err_infor[MAX_SIZE];long i,j,ret;long rowCount,colCount;ret = dll_Excel_Open("D:\\Project\\Excel\\CANoe_Demo\\node\\CANUDS2.xlsx","诊断",err_infor);if(ret == 0){write("打开表格失败:%s",err_infor);return ;}if(1){write("********** 获取行列数 **********");dll_Excel_Get_Sheet_Dimensions(rowCount,colCount);write("表格行数rowCount = %d ; 表格列数colCount = %d",rowCount,colCount);}
}

输出结果:

Program / Model	********** 获取行列数 **********
Program / Model	表格行数rowCount = 235 ; 表格列数colCount = 7

表格的大致内容如下:

  • 说明:这个表格中是由中英文字符组成的,本DLL是支持中文字符的。

在这里插入图片描述

📙 读/写单元格数据

  • dll_Excel_Get_Cell_Data (char* Cel_Pos, char* cellData, long maxSize):该函数通过单元格定位读取单元格数据,如果函数执行成功,返回返回值为单元格的字节大小,否则返回-1。
    • Cel_Pos :单元格的定位,比如“B2”等
    • cellData:返回数据的一维字符数组,(表格中的所有类型数据统一转为字符串返回,注意日期类型的单元格暂未处理,可能返回值为一串数值
    • maxSize:指定的最大返回的单元格字符数
  • dll_Excel_Set_Cell_Data(char* Cel_Pos, const char* cellData: 该函数通过单元格定位写入单元格数据,返回值如果为0则表示失败,否则表示成功。
    • Cel_Pos :单元格的定位,比如“B2”等
      • cellData:设置的单元格数据
on key '1'
{ //...省略代码if(1){write("********** 设置单元格数据测试 **********");strncpy(cell_data, "测试数据5678", MAX_SIZE);ret = dll_Excel_Set_Cell_Data("B8", cell_data);write("ret = %d; Data[B8] = %s ",ret,cell_data);}if(1) {write("********** 读取单元格数据测试 **********");ret = dll_Excel_Get_Cell_Data("B8", cell_data,MAX_SIZE);write("ret = %d; Data[B8] = %s ",ret,cell_data);}//...省略代码

输出结果:

Program / Model	********** 获取行列数 **********
Program / Model	表格行数rowCount = 235 ; 表格列数colCount = 7
Program / Model	********** 设置单元格数据测试 **********
Program / Model	ret = 16; Data[B8] = 测试数据5678 
Program / Model	********** 读取单元格数据测试 **********
Program / Model	ret = 16; Data[B8] = 测试数据5678 

📙 读/写 行数据

  • dll_Excel_Set_Row_Data(long row, long start_col,long length, char rowData[][MAX_SIZE]) :该函数向表格中某一行写入数据,如果写入成功,则函数返回表单的列数,否则返回小于0的值。
    • row : 指定的行数,1表示第一行,不可从0索引。
    • start_col:从哪一列开始写入,1表示第一列,不可从0索引。
    • length:写入的单元格个数。
    • rowData:写入的二维数组,(注意:所有数据以字符串方式写入
  • dll_Excel_Get_Row_Data(long row, char rowData[][MAX_SIZE]): 该函数读取指定行数的表格数据,如果数据返回成功,则函数返回表单的列数,否则返回小于0的值。
on key '1'
{ //...省略代码if(1){char setData[5][MAX_SIZE] = { "设置行 11", "设置行 22" , "设置行 33", "设置行 44", "设置行 55" };write("********** 设置第5行,从第1列开始填充5个数据 **********");colCount = dll_Excel_Set_Row_Data(5, 1, 5,setData);write("colCount = %d",colCount);ret =  dll_Excel_Save();write("保存表格 = %d;",ret);}if(1){write("********** 读取行数据测试 **********");colCount = dll_Excel_Get_Row_Data(5, Data);write("colCount = %d",colCount);for(i = 0;i<colCount;i++){write("行数据 Data[%d] = %s",i,Data[i]);}  }//...省略代码

输出结果:

Program / Model	********** 获取行列数 **********
Program / Model	表格行数rowCount = 235 ; 表格列数colCount = 7
Program / Model	********** 设置第5行,从第1列开始填充5个数据 **********
Program / Model	colCount = 7
Program / Model	保存表格 = 1;
Program / Model	********** 读取行数据测试 **********
Program / Model	colCount = 7
Program / Model	行数据 Data[0] = 设置行 11
Program / Model	行数据 Data[1] = 设置行 22
Program / Model	行数据 Data[2] = 设置行 33
Program / Model	行数据 Data[3] = 设置行 44
Program / Model	行数据 Data[4] = 设置行 55
Program / Model	行数据 Data[5] = WriteTest4
Program / Model	行数据 Data[6] = WriteTest5

表格的大致内容如下:

在这里插入图片描述

📙 读/写 列数据

  • dll_Excel_Set_Col_Data(long col, long start_row,long length, char rowData[][MAX_SIZE]) :该函数向表格中某一列写入数据,如果写入成功,则函数返回表单的行数,否则返回小于0的值。
    • col : 指定的列数,1表示第一列,不可从0索引。
    • start_row:从哪一行开始写入,1表示第一列,不可从0索引。
    • length:写入的单元格个数。
    • rowData:写入的二维数组,(注意:所有数据以字符串方式写入
  • dll_Excel_Get_Col_Data(long col, char colData[][MAX_SIZE]): 该函数读取指定列数的表格数据,如果数据返回成功,则函数返回表单的行数,否则返回小于0的值。
//...省略代码if(1){char setData[5][MAX_SIZE] = { "设置列 11", "设置列 22" , "设置列 33", "设置列 44", "设置列 55" };write("********** 设置第1列,从第6行开始填充5个数据 **********");rowCount = dll_Excel_Set_Col_Data(1, 6,5,setData);//设置第1列,从第6行开始,填充5个数据write("rowCount = %d",rowCount);}if(1){  write("********** 读取列数据测试 **********");rowCount = dll_Excel_Get_Col_Data(1, Data);for(i = 0;i<rowCount;i++){write("列数据Data[%d] = %s",i,Data[i]);}      }if(1){ret =  dll_Excel_Save();write("保存表格 = %d;",ret);dll_Excel_Close();}
}//...省略代码

输出结果:

Program / Model	********** 获取行列数 **********
Program / Model	表格行数rowCount = 235 ; 表格列数colCount = 7
Program / Model	********** 设置第1列,从第6行开始填充5个数据 **********
Program / Model	rowCount = 235
Program / Model	********** 读取列数据测试 **********
Program / Model	列数据Data[0] = WriteTest1
Program / Model	列数据Data[1] = WriteTest2
Program / Model	列数据Data[2] = WriteTest3
Program / Model	列数据Data[3] = WriteTest4
Program / Model	列数据Data[4] = 设置行 11
Program / Model	列数据Data[5] = 设置列 11
Program / Model	列数据Data[6] = 设置列 22
Program / Model	列数据Data[7] = 设置列 33
Program / Model	列数据Data[8] = 设置列 44
Program / Model	列数据Data[9] = 设置列 55
Program / Model	列数据Data[10] = 00WriteTest44
Program / Model	列数据Data[11] = 00WriteTest55
Program / Model	列数据Data[12] = DIA_PRO_10_PHY_09
Program / Model	列数据Data[13] = DIA_PRO_10_PHY_10
Program / Model	列数据Data[14] = 
.。。。。

表格的大致内容如下:

在这里插入图片描述

📙 保存与关闭

  • dll_Excel_Save():保存表格,有对表格写操作时,必须调用该函数保存表格才能生效,注意调用改函数时要保证操作的表格处于关闭状态,否则也很会保存失败
  • dll_Excel_Close():关闭表格。

📙 源码获取

  • 博主花了很长的时间和精力做了这个,希望对您有帮助!

  • 基于CAPL语法生成的解析xlsx文件的DLL文件(DLL以及CANoe Demo工程)

  • 基于CAPL语法生成的解析xlsx文件的DLL文件(C++源码以及CANoe Demo工程)
    23

7

  • 🚩要有最朴素的生活,最遥远的梦想,即使明天天寒地冻,路遥马亡!

  • 🚩如果这篇博客对你有帮助,请 “点赞” “评论”“收藏”一键三连 哦!码字不易,大家的支持就是我坚持下去的动力。
    18
http://www.dtcms.com/wzjs/233026.html

相关文章:

  • 杭州网站制作建设想在百度做推广怎么做
  • 旅游网站建设注册软文营销策划方案
  • 做调查报告的网站网站推广的方法有哪几种
  • 经营性网站需要icp备案吗seo网站有优化培训班吗
  • 上海易站网站建设b站广告投放平台入口
  • 青岛学校论坛网站建设网上宣传广告怎么做
  • 苏州建设局官方网站中国站长
  • 网站文章列表模板软文营销的步骤
  • 广州白云手机网站建设seo优化检测
  • 有没有专门的网站做品牌授权的整站seo优化
  • 深圳今天新闻头条专业seo服务商
  • 做网站软件流程海外广告联盟平台推广
  • 用php做网站的新闻自己做网站流程
  • 辽宁省住房和城乡建设厅网站上不去今日军事新闻最新消息新闻
  • 建立公司需要多少资金学seo优化
  • html设计素材网站win7系统优化
  • 厦门网站建设公司推荐微信管理系统登录
  • 做网站好看的旅行背景图片百度网盘私人资源链接
  • 如何做属于自己的网站世界杯比分查询
  • 城乡建设部网站稽查执法专栏搭建一个网站
  • 如何查网站建设者ipseo自然搜索优化排名
  • 版式设计网站西安官网seo技术
  • 做网站签了合同后不想做了b站推广2023
  • 阿里云ace wordpress廊坊seo排名外包
  • 哪些网站是做零售的p2p万能搜索引擎
  • 厦门有做网站建设阿里指数数据分析平台官网
  • 盘锦微信网站建设外贸网站seo推广教程
  • 网站开发安全机制百度竞价开户费用
  • 团中央智慧团建网站磁力狗bt
  • 滕州市做网站杭州网站制作排名