.Net 平台应用与技巧
MRZ图表分组数据源过滤设计示例
平台应用类
OrBit平台Job配置
【序列号规则】插件使用说明
工单自定义流程节点应用说明
平台 【SVN 版本管理】工具使用说明
平台SPC应用介绍
平台WebAPI文件上传、下载(OrBitWebAPI2)
平台【元对象授权】功能使用说明
平台【分级授权】功能使用说明
平台【消息对象】使用说明
平台【表单消息升级】应用说明
平台可配置【 Excel 文件导出】功能使用说明
按产品定义采集功能使用说明
用户自定义编码及系统单据状态、单据类型的颜色配置
系统中如何增加用户密码过期更换提醒
通用在线打印功能使用说明
平台技巧类
MS-SQL 添加并引用 DLL 程序集
OrBit “自定义对话框”使用说明
Matrix标签打印(OrBitMESHelp/OrBitMetaHelp)
MES事务对象Scripter--扩展方法
MES事务帮助类OrBitMESHelp
WebView2管理类--用于展示看板
元对象Scripter--扩展方法
元对象帮助类OrBitMetaHelp
外挂Exc程序(发布为平台插件)---调用自定义对话框
自定义对话框--Xml/Json数据解析神器
OrBit-KanBan File 类型应用说明
OrBit-X 如何支持 Https 协议
OrBit-X 平台 Bartender 标签模板制作说明
OrBit-X 平台元对象多文件上传、预览
OrBit-X 平台内置 WebAPI 使用说明
OrBit-X 应用打包-扩展工具-快捷迁移
OrBit平台“调用摄像头拍照、录制视频,并上传FTP”窗体控件的应用
元对象可配置Excel导入功能应用说明
元对象嵌入看板
基于 Json 数据格式的 Mrt 模板设计说明
如何利用 Bartender 标签模板实现一拖几打印
平台 Excel 对象导入功能应用说明
平台 MES 事务对象实现网格多选效果
平台 WebAPI 应用说明
平台中 Mrz 模板实现钻取功能
平台发布接口(OrBitWebAPI&OrBitWebAPI2)
平台通过 CLR 实现企业微信消息及文件自动推送
标签/报表实现只预览不打印
通过平台 Web 服务实现远端 Wifi 打印说明
静态事务“平铺按钮”控件的应用
静态事务”调用摄像头扫码识别条码(条形码/二维码)“功能的应用与实现
钉钉机器人接口实现及其他API扩展
-
+
首页
元对象可配置Excel导入功能应用说明
# 1. 概述 一种可应用于在元对象中配置自定义Excel导入功能。该功能以NPOI方式读取Excel内容,支持不同Excel工作表数据,支持可以按Json、XML格式提交数据。该功能可以接收平台固定参数 I_LanguageId、I_PlugInCommand、I_OrBitUserId、I_OrBitUserName、I_ResourceId、I_PKid、I_ParentPKId。该功能仅适用于Excel内容数据很标准规范格式内容,不适合Excel不规则格式内容。 # 2.DLL附件 包含R13 R15及NPOI DLL文件 [【附件】OrBitMetaExcelImport_20231215.zip](/media/attachment/2023/12/OrBitMetaExcelImport_20231215.zip) [【附件】NPOI.rar](/media/attachment/2022/07/NPOI.rar) # 3.元对象设备资产维保单功能举例 - 维保任务项目模板附件: [【附件】MaintenceTaskPlanTemplate.rar](/media/attachment/2022/04/MaintenceTaskPlanTemplate.rar) - 进入MODELING-应用系统建模,选择菜单组“对象建模”,打开“元对象建模”插件,搜索相应元对象名称"EAM_EqAssetMaintForm2",选择页签“元字段组”新建一个组名。 ![](/media//202111/2021-11-23_144507.png) - 选择菜单组“对象建模”,打开“元字段建模”插件,搜索相应元对象名称"EAM_EqAssetMaintForm2",选择刚新建元字段组名,选择页签”元对象方法“,开始新增新的方法名称。 ![](/media//202111/2021-11-23_145312.png) - 重新选择”元对象建模“功能,选择页签”系统元对象“,添加脚本引用DLL文件”OrBitMetaExcelImport.dll“,且需勾选”是否执行脚本“控制功能。 ![](/media//202111/2021-11-23_145947.png) - 选择页签”对象脚本“,在此处开始添加几名脚本后即可。 ![](/media//202203/2022-03-04_162948.png) # 4.Excel模板格式 ![](/media//202112/2021-12-09_165225.png) # 5.Excel绑定元对象方法 - 使用标签模板插件,先把Excel模板上传到FTP目录下,再打开元字段元对象方法选择上传FTP文件. ![](/media//202204/2022-04-22_092336.png) # 6.存储过程固定参数格式 - 存储过程解析示例附件 [【附件】ExcelObject_AssetMaintItem_Import.sql](/media/attachment/2022/08/ExcelObject_AssetMaintItem_Import.sql) @I_Sender NVARCHAR(200)='', --客户端执行按钮 @I_ReturnMessage NVARCHAR(MAX)='' OUTPUT, --返回的信息,支持多语言 @I_ExceptionFieldName NVARCHAR(100)='' OUTPUT, --向客户端报告引起冲突的字段 @I_LanguageId CHAR(1)='1', --客户端传入的语言ID @I_PlugInCommand VARCHAR(5)='', --插件命令 @I_OrBitUserId CHAR(12)='', --用户ID @I_OrBitUserName NVARCHAR(100)='', --用户名 @I_ResourceId CHAR(12)='', --资源ID(如果资源不在资源清单中,那么它将是空的) @I_ResourceName NVARCHAR(100)='', --资源名 @I_PKid CHAR(12) ='', --主键 @I_ParentPKId CHAR(12)='', --父级主键 @I_Parameter NVARCHAR(100)='' , --插件参数 --以上变量为系统服务固定接口参数,必须在每一个DoEvent过程中实现. @FileName NVARCHAR(50) = '', --文件名 @SheetName NVARCHAR(50) = '' , --工作表名称 @DataFormat CHAR(10) = '' , --提交数据格式 XML或JSON @SubmitData NVARCHAR(MAX) = '', --提交Excel数据 @FtpFileId CHAR(12) = '' --Ftp文件 # 7.解析XML或jSON示例 -- 提交数据格式内容 IF ISNULL(@DataFormat,'') = 'XML' BEGIN SET @XMLData = @SubmitData -- 检查XML数据是否为空 IF ISNULL(@XMLData,'') = '' BEGIN SET @I_ReturnMessage = 'ServerMessage:提交XML数据失败.' RETURN -1 END SET @XML = @XMLData -- 解析XML INSERT INTO #TempTable ( SerialNo , MaintType, AssetNumber, MaintItem, MaintMethod, MaintStandard, ResultType ) SELECT * from ( select t.c.value('(序号/text())[1]','int') as SerialNo, t.c.value('(MaintType/text())[1]','char(15)') as MaintType, t.c.value('(AssetNumber/text())[1]','nvarchar(50)') as AssetNumber, t.c.value('(MaintItem/text())[1]','nvarchar(50)') as MaintItem , t.c.value('(MaintMethod/text())[1]','nvarchar(50)') as MaintMethod , t.c.value('(MaintStandard/text())[1]','nvarchar(1000)') as MaintStandard , t.c.value('(ResultType/text())[1]','nvarchar(10)') as ResultType from @XML.nodes('/NewDataSet/Table1') as t(c) ) as T END -- Json数据格式 IF ISNULL(@DataFormat,'') = 'JSON' BEGIN SET @JsonData = @SubmitData -- 解析Json写入临时表 INSERT INTO #JsonTable ( ID , ParName, ParValue ) SELECT parent_ID , [NAME], [StringValue] FROM dbo.ParseJSON(@JsonData) WHERE sequenceNo = 0 AND ISNULL(Object_ID,'') = '' AND ISNULL(NAME,'') <>'序号' -- 去重 INSERT INTO #ColTemp ( ColName ) SELECT ParName FROM #JsonTable GROUP BY ParName -- 获取列标题 SELECT @ColName = TA.ColName FROM ( SELECT STUFF( (SELECT ','+ColName FROM #ColTemp FOR XML PATH('')), 1, 1, '' ) AS ColName ) AS TA SET @Sql = 'select * from #JsonTable as C PIVOT( max(ParValue) FOR ParName IN('+@ColName+') ) AS T ' -- 解析Json数据成功写入临时表 INSERT INTO #TempTable ( SerialNo, AssetNumber, MaintItem, MaintMethod, MaintStandard, MaintType, ResultType ) EXEC(@Sql) END # 8.效果展示 ![](/media//202203/2022-03-03_173924.png) <h6 style="color:red;font-family:'楷体';font-size:20px;font-weight:bold;"><strong>备注:</strong></h6> <strong>a.Excel第一行(或人工指定第2行)请定义列标题,比如:中文名<br> b.Excel第二行(或人工指定第1行)请定义列名(列名不可重复)</strong><br> <h6 style="color:red;font-family:'楷体';font-size:20px;font-weight:bold;"><strong>:说明:</strong></h6> <strong> 01、DataFormat:指XML或JSON<br> 03、按钮名:可以是元对象方法名<br> 04、定义存储过程自定义接收参数:@FileName NVARCHAR(50)='',@SheetName NVARCHAR(50)='' ,@DataFormat VARCHAR(10)='' ,@SubmitData NVARCHAR(MAX)='',@FtpFileId CHAR(12)='' 05、存储过程返回的提示信息可以是一个select(多行提示信息,只用于RETURN -1情形,比如导入批号时需要有的OK,有的NG,此时可以返回select) 或 @I_ReturnMessage <br> <br> 06、.<span style="color:blue;font-family:'楷体';font-size:16px">提供了4个方法,说明如下:</span> ```csharp //1.Excel导入【已过时】。不支持上传文件 ,只允许提交数据。在“ButtonClick(string ButtonName)”方法中调用 DialogShow(OrBitScript.OrBitMetaAPI Scripter, string ProcName, string DataFormat, string ButtonName) //2. Excel导入【已过时】。支持上传文件,先提交数,再上传文件。即存储过程ProcName执行2次(第1次提交数据,第2次提交文件Id)。在“ButtonClick(string ButtonName)”方法中调用 DialogShow(OrBitScript.OrBitMetaAPI Scripter, string ProcName, string DataFormat, string ButtonName, bool IsUpFile) //3.Excel导入【已过时】。支持上传文件,先上传文件,再提交数(包括FtpFileId),列头模板支持新模板 /// <summary> /// Excel导入【已过时】。Excel模板头2行是标题和列头:标题位置通过captionLocation参数指定,默认是1。在“ButtonClick(string ButtonName)”方法中调用 /// </summary> /// <param name="Scripter">元对象接口</param> /// <param name="ProcName">提交存储过程</param> /// <param name="DataFormat">数据格式:xml、json</param> /// <param name="ButtonName">元对象按钮名</param> /// <param name="IsUpFile">是否需上传文件,默认为false。上传文件时,先上传文件,再提交数(包括FtpFileId)</param> /// <param name="captionLocation">标题位置,默认为1(考虑以前的版本)。值可以是:1(第1行)、2(第2行)</param> /// <param name="commitRemovalColumns">提交数据时移除的列,List清单</param> /// <returns>结果:true/false</returns> [Obsolete("此方法已过时,请不要再使用了!", false)] public static bool Show(OrBitScript.OrBitMetaAPI Scripter, string ProcName, string DataFormat, string ButtonName, bool IsUpFile = false, int captionLocation = 1,List<string> commitRemovalColumns=null) //4.最新版本 /// <summary> /// Excel导入。在“ButtonClickBefore(string ButtonName)”方法中调用:此方法返回null时,ButtonClickBefore方法返回true,否则返回false,请一定注意 /// </summary> /// <param name="Scripter">元对象接口</param> /// <param name="ButtonName">元对象按钮名</param> /// <returns>结果:null(空表示没有)/true/false</returns> public static bool? ShowA(OrBitScript.OrBitMetaAPI Scripter, string ButtonName) //调用:在ButtonClickBefore方法中加上此语句 //【Excel导入-通用】 if(OrBitMetaExcelImport.Dialog.ShowA(Scripter,ButtonName).HasValue) { return false; } ```
HG0067
2023年12月26日 17:07
分享
上一篇
下一篇
目录
微信扫一扫
复制链接
手机扫一扫进行分享
复制链接
下载Markdown文件