TableML Excel编译/解析工具

本文涉及的产品
云解析 DNS,旗舰版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
简介:



TableML

TableML, Table Markup Language, 基于电子表格的标记语言,

类似JSON, XML, INI,TableML可以作为软件项目的配置标记语言,

与之不同的是,您可以使用Excel等电子表格编辑软件来配置TableML,自由地添加图标、注释、VB脚本和预编译指令,再由TableML编译器导出干净的TSV格式的配置表表格,编辑方便,使用简单。

目前提供C#版本的运行时、编译器、代码生成器。

 

感谢Mr.Kelly的开源项目,我基于Kelly的TableML基础,进行扩展增加或修改部分功能

原始版本地址:https://github.com/mr-kelly/TableML

扩展版本地址:https://github.com/zhaoqingqing/TableML

 

Example

您可以使用Excel编译如下内容,并保存为文件setting/test.xls:

image

excel测试文件地址:https://github.com/zhaoqingqing/TableML/blob/custom/TableML/TableMLTests/TestSettings/TestExcel.xls

 

然后使用TableML命令行编译器:

TableML.exe --Src setting --To setting2 --CodeFile Code.cs

 

执行后,将会生成setting2/test.tml文件,打开可以看见编译后内容:

Id

Value

int

string
1 Abcdefg
2 Yuiop

另外附带一份Code.cs,自动生成的代码。

 

TableML编辑规则

以上的例子中,展示了TableML的大部分特性:

  • TableML使用Excel等电子表格软件作为编辑器,并通过编译器导出成tml格式文件
  • tml格式文件实质是TSV格式,即Tab Sperated Values,类似CSV
  • 行头占3行:
    • 第1行是列名
    • 第2行是列的信息,通常是声明列的类型,可以自定义
    • 第3行是列的注释
    • 除外的所有行为内容
  • 列名内容以#开头或Comment开头,改列被视为注释列,编译器忽略
  • 行内容的第一个单元格内容,以#开头或Comment开头,改行被视为注释行,编译器忽略
  • 可以使用预编译指令#if和#endif,条件式控制编译的行

 

工程使用说明

  1. 通过git clone 或者download master的方式将工程下载到本地
  2. 建议使用visual studio2012及更高版本打开 TableML\TableML.sln
  3. 在vs中设置TableMLCompilerConsole 为启动项目(解决方案面板,选中项目,右键 - 设为启动项目)
  4. 建议把项目的输出设为Release,然后选择 菜单栏 - 生成 - 生成TableMLCompilerConsole
  5. 打开目录 TableML\TableMLCompilerConsole\bin\Release 可以看到已经生成了TableML.exe

 

工程简介

TableML

  • tml(tsv)文件读取接口,把tsv文件读取至内存,供应用程序访问

 

TableMLCompiler

  • 对excel/csv 源文件进行编译,解析配置表规则生成tsv文件

 

TableMLCompilerConsole

  • 提供命令行,根据条件对excel进行编译

 

TableMLGUI

 

TableMLTests

  • 编译功能的单元测试

自定义配置

以下功能可以进行自定义或者是我扩展的功能:

1. 从第2列(指定列)开始读

​ 修改SimpleExcelFile.cs中的StartColumnIdx值如:

   public const int StartColumnIdx = 1;

2.每个表对应一个Class文件

调用方法如下:

batchCompiler.CompileTableMLAllInSingleFile(srcDirectory, OutputDirectory, CodeFilePath, templateString, "AppSettings", ".tml", null, true);

示例代码可参考:LocalDebug.cs中的CompileAll()

 

3.修改生成的代码模版

修改TableML.Compiler.DefaultTemplate中的字符串模版

 

4.预留指定行,自定义行,比如第6行是字段名,第8行是数据类型,第15行是字段注释

扩展SimpleExcelFile.PreserverRowCount = 预留行

修改SimpleExcelFile.ParseExcel中的Worksheet.GetRow(5);

excel读取规则

先读取Excel的行,再读取列,把数据写入到tml文件中。

 

GUI工具内存溢出

如果在使用TableMLGUI时,特别占用内存,建议把excel另存为csv格式,或者减少单个excel文件的大小,以减少内存占用。

 

更多功能

For SQL数据库

TableMLGUI提供一键将excel数据插入到sqlite中。

采用sql的事务机制,在插入大量数据的环境下,耗时更短。

同时在控制台输出sql语句方便调试查错。

 

自动读取配置代码生成

TableML编译器内置Liquid模板引擎。您可以自定义模板内容,来为不同的语言生成读表类。

TableML是KSFramework的一部分,用于游戏配置表读取代码,支持热重载、分表等机制。

 

TableML for C#/Mono/Xamarin

TableML目前只提供C#版本。当前TableML使用基于Xamarin Studio开发,TableML的C#版本具备了跨平台特性(Windows/Mac/Linux)。



本文出自赵青青,原文链接:http://www.cnblogs.com/zhaoqingqing/p/7440980.html,如需转载请自行联系原作者

相关文章
|
2月前
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
95 0
|
1月前
|
自然语言处理 编译器 Linux
|
28天前
|
数据可视化 数据挖掘 项目管理
打破协作壁垒,Excel多人协同编辑工具带来翻天覆地的变化!
在现代办公中,团队协作和信息共享至关重要。Excel的多人协同编辑功能显著提升了工作效率,避免了版本冲突和重复劳动。市场上的Google Sheets、Airtable、板栗看板和Zoho Sheet等工具也提供了类似功能。以其清晰的界面和强大的数据分析能力,特别适合项目管理和进度追踪,帮助团队高效协作,达成目标。
|
1月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
72 2
|
1月前
|
安全 程序员 API
|
1月前
|
自然语言处理 并行计算 数据可视化
免费开源法律文档比对工具:技术解析与应用
这款免费开源的法律文档比对工具,利用先进的文本分析和自然语言处理技术,实现高效、精准的文档比对。核心功能包括文本差异检测、多格式支持、语义分析、批量处理及用户友好的可视化界面,广泛适用于法律行业的各类场景。
|
1月前
|
数据处理
在Excel中,通配符是一种强大的工具
【10月更文挑战第23天】在Excel中,通配符是一种强大的工具
26 4
|
1月前
|
自然语言处理 编译器 Linux
告别头文件,编译效率提升 42%!C++ Modules 实战解析 | 干货推荐
本文中,阿里云智能集团开发工程师李泽政以 Alinux 为操作环境,讲解模块相比传统头文件有哪些优势,并通过若干个例子,学习如何组织一个 C++ 模块工程并使用模块封装第三方库或是改造现有的项目。
|
2月前
|
存储 前端开发 JavaScript
前端模块化打包工具的深度解析
【10月更文挑战第13天】前端模块化打包工具的深度解析
|
2月前
|
JSON JavaScript 前端开发
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
深入解析ESLint配置:从入门到精通的全方位指南,精细调优你的代码质量保障工具
102 0

推荐镜像

更多