首页 / 技术领域 / 语言建模 / 一种基于元数据驱动的Excel解析方法及系统

一种基于元数据驱动的Excel解析方法及系统

热词 excel addcell 解析 加粗 row 底层 元数据 语言 业务 数据
专利类型 发明公开 法律事件 公开; 实质审查; 驳回;
专利有效性 无效专利 当前状态 驳回
申请号 CN202011207609.8 申请日 2020-11-03
公开(公告)号 CN112099801A 公开(公告)日 2020-12-18
申请人 广州市玄武无线科技股份有限公司; 申请人类型 企业
发明人 李景雄; 卢超; 李海荣; 陈永辉; 第一发明人 李景雄
权利人 广州市玄武无线科技股份有限公司 权利人类型 企业
当前权利人 广州市玄武无线科技股份有限公司 当前权利人类型 企业
省份 当前专利权人所在省份:广东省 城市 当前专利权人所在城市:广东省广州市
具体地址 当前专利权人所在详细地址:广东省广州市天河区体育西路103号之一维多利广场B栋32层01单元房 邮编 当前专利权人邮编:510000
主IPC国际分类 G06F8/41 所有IPC国际分类 G06F8/41G06F8/34
专利引用数量 12 专利被引用数量 0
专利权利要求数量 10 专利文献类型 A
专利代理机构 广州三环专利商标代理有限公司 专利代理人 陈旭红; 吕金金;
摘要 本 发明 公开了一种基于元数据驱动的Excel解析方法及系统,涉及 数据处理 技术领域,所述方法包括:根据获取的Excel模板文件,生成第一底层解析语言;根据所述底层解析语言,创建 可视化 操作界面,所述操作界面用于调整单元格的对象配置;获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;根据所述第二底层解析语言,导出新配置的Excel文件。本发明基于领域模型进行建模,自动化生成导出Excel相关元数据和底层业务处理逻辑脚本,支持可视化动态调整底层解析语言,能够应用于报表格式复杂多变的场景。
权利要求

1.一种基于元数据驱动的Excel解析方法,其特征在于,包括:
根据获取的Excel模板文件,生成第一底层解析语言;
根据所述底层解析语言,创建可视化操作界面,所述操作界面用于调整单元格的对象配置;
获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;
根据所述第二底层解析语言,导出新配置的Excel文件。
2.根据权利要求1所述的基于元数据驱动的Excel解析方法,其特征在于,还包括:
在生成所述第一底层解析语言过程和导出新配置的Excel文件过程中,管理维护单元格信息;其中,所述单元格信息包括元数据和业务信息;
管理维护单元格信息,包括管理所述元数据与所述业务信息之间的映射关系、对所述业务信息行为进行定义、关联所述业务信息对应的业务实体和处理异常数据。
3.根据权利要求1所述的基于元数据驱动的Excel解析方法,其特征在于,所述根据获取的Excel模板文件,生成第一底层解析语言,包括:
读取所述Excel模板文件的工作表区中有效的单元格信息,对所述单元格信息进行分类解析;
生成第一底层解析语言。
4.根据权利要求1所述的基于元数据驱动的Excel解析方法,其特征在于,所述可视化操作界面,包括单元格增删控件、行列增删控件、单元格样式调整控件和表格导出控件。
5.根据权利要求1所述的基于元数据驱动的Excel解析方法,其特征在于,所述获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言,包括:
获取所述操作界面调整后的单元格配置信息;
根据所述单元格配置信息,调整所述第一底层解析语言中元数据与业务信息之间的映射关系,生成第二底层解析语言。
6.根据权利要求1所述的基于元数据驱动的Excel解析方法,其特征在于,所述根据所述第二底层解析语言,导出新配置的Excel文件,包括:
根据所述第二底层解析语言,按照先后顺序填充每个指定的单元格和设定样式,导出Excel文件。
7.一种基于元数据驱动的Excel解析系统,其特征在于,包括:
解析模,用于根据获取的Excel模板文件,生成第一底层解析语言;
逻辑调整模块,用于根据所述底层解析语言,创建可视化操作界面,所述操作界面用于调整单元格的对象配置;
创建模块,获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;
导出模块,根据所述第二底层解析语言,导出新配置的Excel文件。
8.根据权利要求7所述的基于元数据驱动的Excel解析系统,其特征在于,还包括:
服务模块,在生成所述第一底层解析语言过程和导出新配置的Excel文件过程中,管理维护单元格信息;其中,所述单元格信息包括元数据和业务信息;
管理维护单元格信息,包括管理所述元数据与所述业务信息之间的映射关系、对所述业务信息行为进行定义、关联所述业务信息对应的业务实体和处理异常数据。
9.一种电子设备,其特征在于,其包括:
处理器、存储器和总线;
所述总线,用于连接所述处理器和所述存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,执行上述权利要求1-6中任一项所述的基于元数据驱动的Excel解析方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述权利要求1-6中任一项所述的基于元数据驱动的Excel解析方法。

说明书全文

一种基于元数据驱动的Excel解析方法及系统

技术领域

[0001] 本发明涉及数据处理技术领域,尤其涉及一种基于元数据驱动的Excel解析方法及系统。

背景技术

[0002] 企业对业务数据越来越重视,软件应用领域对数据的智能分析、数据的策略分析、画像绘制方面的需求也越来越多。而数据的展示都离不开报表,报表在企业应用软件的主
要表现方式就是Excel表格数据展示。导入和导出Excel报表数据成为企业应用软件的必备
功能。
[0003] 在企业应用软件中,Excel的导出和导出模版是分别制作,导出功能的实现有包括:1)应用软件内置规则定制开发每一个Excel报表,数据查询逻辑,组装逻辑都是封装在
软件内部代码。但二开成本较高,更新往往是程序级别的更新,无法热更新。2)导出功能的
业务逻辑可编辑并存储于数据库中,但是具体逻辑规划每一行数据的表达具体到每一个单
元格的数据都需要人工编写。
[0004] 这些技术要不是固化在程序内部代码,更新和二次开发成本过高且存在更新异常的险,要不就是人工实现Excel样式、甚至具体到每个单元格内容的逻辑都写入数据库可
读存储介质,维护成本高。

发明内容

[0005] 本发明目的在于,提供一种基于元数据驱动的Excel解析方法及系统,能够基于领域模型进行建模,自动化生成导出Excel相关元数据和底层业务处理逻辑脚本,支持可视化
动态调整底层解析语言,应用于报表格式复杂多变的场景。
[0006] 为实现上述目的,本发明实施例提供一种基于元数据驱动的Excel解析方法,包括:
根据获取的Excel模板文件,生成第一底层解析语言;
根据所述底层解析语言,创建可视化操作界面,所述操作界面用于调整单元格的对象
配置;
获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;
根据所述第二底层解析语言,导出新配置的Excel文件。
[0007] 优选地,所述方法还包括:在生成所述第一底层解析语言过程和导出新配置的Excel文件过程中,管理维护单元
格信息;其中,所述单元格信息包括元数据和业务信息;
管理维护单元格信息,包括管理所述元数据与所述业务信息之间的映射关系、对所述
业务信息行为进行定义、关联所述业务信息对应的业务实体和处理异常数据。
[0008] 优选地,所述根据获取的Excel模板文件,生成第一底层解析语言,包括:读取所述Excel模板文件的工作表区中有效的单元格信息,对所述单元格信息进行分
类解析;
生成第一底层解析语言。
[0009] 优选地,所述可视化操作界面,包括单元格增删控件、行列增删控件、单元格样式调整控件和表格导出控件。
[0010] 优选地,所述获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言,包括:
获取所述操作界面调整后的单元格配置信息;
根据所述单元格配置信息,调整所述第一底层解析语言中元数据与业务信息之间的映
射关系,生成第二底层解析语言。
[0011] 优选地,所述根据所述第二底层解析语言,导出新配置的Excel文件,包括:根据所述第二底层解析语言,按照先后顺序填充每个指定的单元格和设定样式,导出
Excel文件。
[0012] 本发明实施例还提供一种基于元数据驱动的Excel解析系统,包括:解析模,用于根据获取的Excel模板文件,生成第一底层解析语言;
逻辑调整模块,用于根据所述底层解析语言,创建可视化操作界面,所述操作界面用于
调整单元格的对象配置;
创建模块,获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;
导出模块,根据所述第二底层解析语言,导出新配置的Excel文件。
[0013] 优选地,所述系统还包括:服务模块,在生成所述第一底层解析语言过程和导出新配置的Excel文件过程中,管理
维护单元格信息;其中,所述单元格信息包括元数据和业务信息;
管理维护单元格信息,包括管理所述元数据与所述业务信息之间的映射关系、对所述
业务信息行为进行定义、关联所述业务信息对应的业务实体和处理异常数据。
[0014] 本发明实施例还提供一种电子设备,所述电子设备包括:处理器、存储器和总线;
所述总线,用于连接所述处理器和所述存储器;
所述存储器,用于存储操作指令;
所述处理器,用于通过调用所述操作指令,可执行指令使处理器处理执行上述的基于
元数据驱动的Excel解析方法的操作。
[0015] 本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述的基于元数据驱动的
Excel解析方法。
[0016] 本发明的实施例,具有如下有益效果:本发明提供了一种基于元数据驱动的Excel解析方法及系统,涉及数据处理技术领域,
所述方法包括:根据获取的Excel模板文件,生成第一底层解析语言;根据所述底层解析语
言,创建可视化操作界面,所述操作界面用于调整单元格的对象配置;获取所述操作界面调
整后的单元格配置信息,生成第二底层解析语言;根据所述第二底层解析语言,导出新配置
的Excel文件。本发明基于领域模型进行建模,自动化生成导出Excel相关元数据和底层业
务处理逻辑脚本,支持可视化动态调整底层解析语言,能够应用于报表格式复杂多变的场
景。本发明实施例基于元数据驱动的Excel报表的自动化创建导出功能,通过自动化识别导
入Excel模板文件,自动解析模板文件构造内部进行预编译、执行的底层解析语言,实现可
视化调整报表对象映射关系、工作表内容、单元格属性、元数据属性等元数据信息和业务处
理逻辑等,支持动态调整底层解析语言。能够快速开发、快速调整、快速部署,数据支持业务
处理,支持复杂业务场景。适配于各种数据处理器,支持不同来源的数据处理和动态拓展。
附图说明
[0017] 为了更清楚地说明本发明的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施方式,对于本领域普
通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0018] 图1为本发明某一实施例提供的一种基于元数据驱动的Excel解析方法的流程示意图;
图2为本发明某一实施例提供的一种基于元数据驱动的Excel解析系统的结构示意图;
图3为本发明某一实施例提供的可视化操作界面示意图;
图4为本发明某一实施例提供的新配置的Excel文件示意图;
图5为本发明某一实施例提供的一种基于元数据驱动的Excel解析的电子设备的结构
示意图。

具体实施方式

[0019] 下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于
本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
[0020] 应当理解,文中所使用的步骤编号仅是为了方便描述,不对作为对步骤执行先后顺序的限定。
[0021] 应当理解,在本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文
清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
[0022] 术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
[0023] 术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
[0024] 元数据,又称中介数据、中继数据,为描述数据的数据(data about data),主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记
录等功能。元数据算是一种电子式目录,为了达到编制目录的目的,在描述并收藏数据的内
容或特色,进而达成协助数据检索的目的。元数据是关于数据的组织、数据域及其关系的信
息,简言之,元数据就是关于数据的数据。
[0025] 领域模型是对领域内的概念类或现实世界中对象的可视化表示。又称概念模型、领域对象模型、分析对象模型。它专注于分析问题领域本身,发掘重要的业务领域概念,并
建立业务领域概念之间的关系。
[0026] 请参阅图1。
[0027] 本发明实施例提供一种基于元数据驱动的Excel解析方法,包括:步骤S100,根据获取的Excel模板文件,生成第一底层解析语言;
步骤S200,根据所述底层解析语言,创建可视化操作界面,所述操作界面用于调整单元
格的对象配置;
步骤S300,获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;
步骤S400,根据所述第二底层解析语言,导出新配置的Excel文件。
[0028] 在一示例中,所述方法还包括:步骤S500,在生成所述第一底层解析语言过程和导出新配置的Excel文件过程中,管理维护单元格信息;其中,所述单元格信息包括元数据和
业务信息;管理维护单元格信息,包括管理所述元数据与所述业务信息之间的映射关系、对
所述业务信息行为进行定义、关联所述业务信息对应的业务实体和处理异常数据。负责业
务处理的元数据配置信息,包含了业务驱动、数据汇总、各个交互的业务对象属性间的映射
关系以及当数据发生异常处理规则、数据处理的业务逻辑信息等。配置元数据与业务实体
属性间的映射关系表如表1所示:
表1配置元数据与业务实体属性间的映射关系表
业务实体名 属性 数据驱动
订单 ordercode 订单唯一编码
订单 ordername 订单名
订单明细 Orderdetail 关联订单明细实体
在一示例中,所述根据获取的Excel模板文件,生成第一底层解析语言,包括:读取所述
Excel模板文件的工作表区中有效的单元格信息,对所述单元格信息进行分类解析;生成第
一底层解析语言。导入Excel模版文件后自动识别每个有效单元格的属性、样式、内容,并自
动化生成设定好的具备全EXCEL全部操作功能解析的底层解析语言,并自动适配元数据配
置服务引擎设定好的元数据属性、业务对象映射关系等,预加载元数据行为规则和业务逻
辑。上述业务信息将和底层解析语言和根据实际情况自动化识别成该导出报表的底层解析
语言代码文件,传递给业务动态逻辑调整系统和导出解析引擎。模版解析动态引擎负责处
理的信息内容如表2所示。
[0029] 表2模版解析动态引擎负责处理的信息内容表内容 描述
工作表区 读取每个工作表,顺序生成工作表对象,1:1指代工作表映射
行 读取工作表中的每一行,顺序生成行对象,映射行关系
单元格 读取每一行的全部单元格,顺序生成单元格对象,映射单元格信息。
单元格样式 每个单元格都有其样式对象,解析每个单元格的属性(列宽、行高等)、样式(颜色、字体等)、特征(合并单元格跨行跨列),并汇总分类。 在一示例中,所述可视化操作界面,包括单元格增删控件、行列增删控件、单元格样式
调整控件和表格导出控件。
[0030] 在一示例中,所述获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言,包括:
获取所述操作界面调整后的单元格配置信息;
根据所述单元格配置信息,调整所述第一底层解析语言中元数据与业务信息之间的映
射关系,生成第二底层解析语言。根据单元格配置信息可以配置底层解析语言设定的所有
对象(工作表、行、单元格),调整单元格与数据字段间的映射关系、数据处理信息,并动态生
成、调整底层解析语言。
[0031] 在一示例中,所述根据所述第二底层解析语言,导出新配置的Excel文件,包括:根据所述第二底层解析语言,按照先后顺序填充每个指定的单元格和设定样式,导出Excel文
件。通过操作界面的表格导出控件,获取导出行为的元数据配置信息,并读取报表对应的底
层解析语言代码文件,根据底层解析语言文件中的业务行为属性、单元格和数据字段间的
映射关系等信息的表达、导出文件的业务配置,实现EXCEL报表导出功能。导出文件的业务
配置如表2所示。
[0032] 表3导出文件的业务配置表属性 值
文件名 xxx公司订单.xlsx
文件类型 Excel
文件路径 /xxx/a4e46229s2s4/Xxx公司订单.xlsx
在一具体实施方式中,Excel模版文件中单元格包含的内容如表4所示,其中下标从0开
始计算。
[0033] 表4Excel模版文件中单元格包含的内容单元格内容 所在行下标 所在列下标 合并单元格
上海妙可蓝多食品科技股份有限公司\r\n   订购单 0 0 开始行0,结束行1,开始列0,结束列6
销售部:零售事业部 2 0  
业务员 2 1  
xxx 2 2  
单据编号: 2 3 2,2,3,6
供方: 3 0 3,4,0,0
上海xxx科技股份有限公司 3 1 3,4,1,1
购方: 3 2  
联系人 4 2  
xxx 4 3 4,4,3,6
联系人: 5 0  
空 5 1  
联系电话: 5 2  
133 xxxxxxxx 5 3 5,5,3,6
电话: 6 0  
空 6 1  
收货地址: 6 2  
上海市浦东新区川南xx路 6 3 6,6,3,6
产品品称 7 0  
产品规格 7 1  
编号 7 2  
数量(箱) 7 3  
箱价 7 4  
金额(元) 7 5  
备注 7 6  
根据表4得到的底层解析语言如下:
请参阅图2。
[0034] 本发明实施例还提供一种基于元数据驱动的Excel解析系统,包括:解析模块01、逻辑调整模块02、创建模块03和导出模块04。
[0035] 解析模块01,用于根据获取的Excel模板文件,生成第一底层解析语言。可以理解地,所述解析模块01相当于模版解析动态引擎,在实际应用中,客户一般会提供一份模版文
件(即Excel格式的Excel模板文件)给我们实现导出功能。业务逻辑就是按照模版文件去构
造格式和样式,中间的数据表达交由数据处理填充相关单元格。模版解析动态引擎根据模
版文件,读取所述模板文件的每个工作表区,遍历工作表区的每一行每个单元格,识别内
容,识别单元格样式。EXCEL文件的基础构成单位是单元格,再由多个单元格构造行,多行构
造一个工作表区。模版解析动态引擎实现导入获取模版文件,分析模板文件中的工作表区
中的所有单元格信息,并且进行分类解析,生成底层解析语言。底层解析语言,是模版解析
动态引擎内部自定义构建的一套规则,定义了工作表、行、单元格、样式等EXCEL的专属对
象,内部封装了大量EXCEL报表操作的业务逻辑、属性、映射关系、定义、执行导出等各种解
析器和构造器。遍历每一行的全部有效的单元格,智能识别填充的内容和设置的样式,转换
成底层解析语言。
[0036] 作为示例,表5为一份Excel模板文件。
[0037] 表5Excel模板文件的表格根据表5的Excel模板文件生成的第一底层解析语言如下:
逻辑调整模块02,用于根据所述底层解析语言,创建可视化操作界面,所述操作界面用
于调整单元格的对象配置。逻辑调整模块02根据解析模块01(模版解析动态引擎)解析得到
底层解析语言,创建一个可视化操作相关单元格配置的界面(作为示例,请参阅图3,图3为
根据第一底层解析语言生成的可视化操作界面),可供用户手动调整。用户手动调整后自动
更新底层解析语言,用户可以按照自己的需要调整数据单元格与数据库可读存储介质。
[0038] 进一步地,除了配置EXCEL属性,颗粒度达到单元格,还能对元数据属性、业务实体进行定义解析,构建EXCEL单元格内容填充的数据来源。通过选择实体的内容,再配置对应
的单元格坐标,即可生成相应的底层数据解析语言。
[0039] 创建模块03,获取所述操作界面调整后的单元格配置信息,生成第二底层解析语言;
导出模块04,根据所述第二底层解析语言,导出新配置的Excel文件。导出模块04相当
于导出解析引擎,负责把底层解析语言转换成对EXCEL的导出功能操作,适配各种数据处理
器,支持数据的初步校验处、支持不同来源的数据进行数据处理,相关数据结果根据底层解
析语言进行解析,按照先后顺序填充每个指定的单元格和设定样式,最后实现导出Excel文
件的功能。
[0040] 在一示例中,所述系统还包括:服务模块05,在生成所述第一底层解析语言过程和导出新配置的Excel文件过程中,管
理维护单元格信息;其中,所述单元格信息包括元数据和业务信息;管理维护单元格信息,
包括管理所述元数据与所述业务信息之间的映射关系、对所述业务信息行为进行定义、关
联所述业务信息对应的业务实体和处理异常数据。可以理解地,所述服务模块05相当于元
数据配置服务引擎,用于管理数据导出的元数据配置信息,在本实施例中主要包括数据与
业务对象属性间的映射关系、业务数据行为定义、业务实体关联、数据异常的处理规则、业
务逻辑和数据处理逻辑信息等。
[0041] 在一具体实施例中,配置元数据与业务实体属性间的映射关系如表6所示:表6配置元数据与业务实体属性间的映射关系表
业务实体名 属性 数据驱动
订单 ordercode 订单唯一编码
订单 ordername 订单名
订单明细 Orderdetail 关联订单明细实体
在一具体实施方式中,根据第二底层解析语言导出新配置的Excel文件,根据以下示例
的第二底层解析语言:
load("excelapi");
var sheet = EXCEL.addSheet('订单模板');
var style = {};
style.size = '20'; //文字大小
style.bold = 'true'; //加粗
style.wrap = 'true'; //自动换行
EXCEL.addStyle('标题1', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'false'; //不加粗
style.backcolor = 'yellow'; //黄色
style.wrap = 'true'; //自动换行
EXCEL.addStyle('黄色不加粗不加边框', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'true'; // 加粗
style.backcolor = 'yellow'; //黄色
style.border = 'true';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('黄色加粗加边框', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'true'; // 加粗
style.backcolor = 'yellow'; //黄色
style.border = 'false';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('黄色加粗不加边框', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'true'; // 加粗
style.border = 'false';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('加粗不加边框', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'true'; // 加粗
style.border = 'true';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('加粗加边框', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'false'; //不加粗
style.border = 'false';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('不加粗不加边框', style);
style = {};
style.size = '16'; //文字大小
style.bold = 'true'; //不加粗
style.border = 'false';
EXCEL.addStyle('16号加粗不加边框', style);
style = {};
style.size = '16'; //文字大小
style.bold = 'true'; //不加粗
style.border = 'false';
style.align = 'left';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('16号加粗不加边框字体靠左', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'true'; //不加粗
style.border = 'true';
style.fontcolor = 'red';
style.wrap = 'true'; //自动换行
EXCEL.addStyle('12号红字加粗加框', style);
style = {};
style.size = '12'; //文字大小
style.bold = 'true'; //不加粗
style.border = 'true';
style.align = 'left';
style.fontcolor = 'red';
style.backcolor = 'yellow'; //黄色
style.wrap = 'true'; //自动换行
EXCEL.addStyle('12号黄色红字加粗加框', style);
var row = sheet.addRow(0);
row.setHigh(160);//设置行高
sheet.merge('0,1,0,6');
row = sheet.getRow(0);
row.addCell(0, '上海xxxx食品科技股份有限公司\r\n   订购单', '标题1');
row = sheet.addRow(2);
row.addCell(0, '销售部门:零售事业部', '加粗不加边框');
row.addCell(1, '业务员:', '加粗不加边框');
row.addCell(2, 'xxx', '黄色不加粗不加边框');
sheet.merge('2,2,3,6');
row = sheet.getRow(2);
row.addCell(3, '单据编号:', '16号加粗不加边框字体靠左');
row = sheet.addRow(3);
//row=sheet.getRow(3);
row.addCell(0, '供方:', '黄色加粗加边框');
row.addCell(1, '上海xxxx食品科技股份有限公司', '黄色加粗加边框')
row.addCell(2, '购方:', '黄色加粗加边框')
row.addCell(3, '上海xxx商贸有限公司', '黄色加粗加边框')
row = sheet.addRow(4);
row.addCell(2, '联系人:', '黄色加粗加边框')
row.addCell(3, 'xxx', '黄色加粗加边框')
row = sheet.addRow(5);
row.addCell(0, '联系人:', '黄色加粗加边框')
row.addCell(1, ' ', '黄色加粗加边框')
row.addCell(2, '联系电话:', '黄色加粗加边框')
row.addCell(3, '133xxxxxxxx ', '黄色加粗加边框')
row = sheet.addRow(6);
var value = [];
value.push('电话:');
value.push(' ');
value.push('收货地址:');
value.push('上海市浦东新区川xxx路');
row.addCells(value, '黄色加粗加边框');
row = sheet.addRow(7);
row.setHigh(35);//设置行高
value = [];
value.push('产品品称');
value.push('产品规格');
value.push('编号');
value.push('数量(箱)');
value.push('箱价');
value.push('金额(元)');
value.push('备注');
row.addCells(value, '加粗加边框');
//订单数据
var data = select t.productname, (select a.distributionnorm from kx_kq_
product a where a.productcode  = t.productcode)as distributionnorm, 
t.productcode, t.batchcount, t.price, t.batchcount * t.price as amount from 
kx_order_detail t where t.orderid = '1197402658797916160';
for (var i = 0; i    row = sheet.addRow(8 + i);
row.addCell(0, data[i].productname, '加粗加边框');
row.addCell(1, data[i].distributionnorm, '黄色加粗加边框');
row.addCell(2, data[i].productcode, '黄色加粗加边框');
row.addCell(3, data[i].batchcount, '黄色加粗加边框');
row.addCell(4, data[i].price, '黄色加粗加边框');
row.addCell(5, data[i].amount, '黄色加粗加边框');
row.addCell(6, ' ', '黄色加粗加边框');
}
var nowRowNum = row.getCurrentRowIndex(); //获取当前的行数
nowRowNum=nowRowNum+1;
row = sheet.addRow(nowRowNum);
row.addCell(0, '合计', '12号红字加粗加框');
row.addCell(1, ' ', '12号黄色红字加粗加框');
row.addCell(2, ' ', '12号黄色红字加粗加框');
row.addCell(3, '2205', '12号黄色红字加粗加框');
row.addCell(4, ' ', '12号黄色红字加粗加框');
row.addCell(5, '528026.8', '12号黄色红字加粗加框');
row.addCell(6, '754324', '12号黄色红字加粗加框');
nowRowNum=nowRowNum+1;
var  v_collect=nowRowNum;
row = sheet.addRow(nowRowNum);
 value = [];
value.push('总汇款金额(元)');
value.push(' ');
row.addCells(value,'加粗加边框');
nowRowNum=nowRowNum+1;
var  v_collect1=nowRowNum;
row = sheet.addRow(v_collect1);
 value = [];
value.push('交货条件');
value.push('购方全额预付货款,供方接到货款后安排出货。');
row.addCells(value,'加粗加边框');
nowRowNum=nowRowNum+1;
var  v_collect2=nowRowNum;
row = sheet.addRow(v_collect2);
row.setHigh(66);//设置行高
value = [];
value.push('汇款帐户信息');
value.push('公司名称:上海xxxx食品科技股份有限公司 \r\n开户行:光大银行
xxxx支行   \r\n帐号:xxxxxxxxxx 0xxx \r\n');
row.addCells(value,'加粗加边框');
nowRowNum=nowRowNum+1;
var  v_collect3=nowRowNum;
row =sheet.addRow(v_collect3);
value = [];
value.push('备注');
value.push('xxxxxxx订单');
row.addCells(value,'加粗加边框');
/**合并单元格***/
var merBorder = [];
var range =  '3,4,0,0'; //合并开始行为第0行,结束行第0行,开始列第0列,结束列
第1列的单元格。
[0042] merBorder.push(range);range = '3,4,1,1';
merBorder.push(range);
range = '3,3,3,6';
merBorder.push(range);
range = '4,4,3,6';
merBorder.push(range);
range = '5,5,3,6';
merBorder.push(range);
range = '6,6,3,6';
merBorder.push(range);
range = v_collect+','+v_collect+',1,6';
merBorder.push(range);
range = v_collect1+','+v_collect1+',1,6';
merBorder.push(range);
range = v_collect2+','+v_collect2+',1,6';
merBorder.push(range);
range = v_collect3+','+v_collect3+',1,6';
merBorder.push(range);
sheet.merge(merBorder, true);
sheet.setCellWidth(0, 80); //设置列宽
sheet.setCellWidth(1, 50); //设置列宽
sheet.setCellWidth(2, 35); //设置列宽
sheet.setCellWidth(3, 25); //设置列宽
sheet.setCellWidth(5, 25); //设置列宽
EXCEL.setTotalCount(1);
EXCEL.export("订单.xlsx");
得到的新配置的Excel文件如图4所示。
[0043] 请参阅图5。
[0044] 本发明实施例还提供一种电子设备,该电子设备包括:处理器、存储器和总线;所述总线,用于连接所述处理器和所述存储器;所述存储器,用于存储操作指令;所述处理器,
用于通过调用所述操作指令,可执行指令使处理器处理执行上述的基于元数据驱动的
Excel解析方法的操作。
[0045] 在一具体实施方式中,图5所示的电子设备10包括:处理器11和存储器13。其中,处理器11和存储器13相连,如通过总线12相连。可选地,电子设备10还可以包括收发器14。需
要说明的是,实际应用中收发器14不限于一个,该电子设备10的结构并不构成对本申请
施例的限定。
[0046] 处理器11可以是CPU,通用处理器,DSP,ASIC,FPGA或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的
各种示例性的逻辑方框,模块和电路。处理器11也可以是实现计算功能的组合,例如包含一
个或多个微处理器组合,DSP和微处理器的组合等。
[0047] 总线12可包括一通路,在上述组件之间传送信息。总线12可以是PCI总线或EISA总线等。总线12可以分为地址总线数据总线、控制总线等。为便于表示,图5中仅用一条粗线
表示,但并不表示仅有一根总线或一种类型的总线。
[0048] 存储器13可以是ROM或可存储静态信息和指令的其他类型的静态存储设备,RAM或者可存储信息和指令的其他类型的动态存储设备,也可以是EEPROM、CD-ROM或其他光盘存
储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘可读存储介
质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序
代码并能够由计算机存取的任何其他介质,但不限于此。
[0049] 存储器13用于存储执行本申请方案的应用程序代码,并由处理器11来控制执行。处理器11用于执行存储器13中存储的应用程序代码,以实现前述任一方法实施例所示的内
容。
[0050] 其中,电子设备包括但不限于:移动电话笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等
等的移动终端以及诸如数字TV、台式计算机等等的固定终端。
[0051] 本发明实施例还提供一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机指令,当其在计算机上运行时,使得计算机可以执行上述的基于元数据驱动的
Excel解析方法。所述方法包括:根据获取的Excel模板文件,生成第一底层解析语言;根据
所述底层解析语言,创建可视化操作界面,所述操作界面用于调整单元格的对象配置;获取
所述操作界面调整后的单元格配置信息,生成第二底层解析语言;根据所述第二底层解析
语言,导出新配置的Excel文件。本发明基于领域模型进行建模,自动化生成导出Excel相关
元数据和底层业务处理逻辑脚本,支持可视化动态调整底层解析语言,能够应用于报表格
式复杂多变的场景。本发明实施例基于元数据驱动的Excel报表的自动化创建导出功能,通
过自动化识别导入Excel模板文件,自动解析模板文件构造内部进行预编译、执行的底层解
析语言,实现可视化调整报表对象映射关系、工作表内容、单元格属性、元数据属性等元数
据信息和业务处理逻辑等,支持动态调整底层解析语言。能够快速开发、快速调整、快速部
署,数据支持业务处理,支持复杂业务场景。适配于各种数据处理器,支持不同来源的数据
处理和动态拓展。
[0052] 以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为
本发明的保护范围。
微信群二维码
意见反馈