TableML, Table Markup Language, 基於電子表格的標記語言,html
相似JSON, XML, INI,TableML能夠做爲軟件項目的配置標記語言,git
與之不一樣的是,您可使用Excel等電子表格編輯軟件來配置TableML,自由地添加圖標、註釋、VB腳本和預編譯指令,再由TableML編譯器導出乾淨的TSV格式的配置表表格,編輯方便,使用簡單。github
目前提供C#版本的運行時、編譯器、代碼生成器。sql
感謝Mr.Kelly的開源項目,我基於Kelly的TableML基礎,進行擴展增長或修改部分功能。數據庫
原始版本地址:https://github.com/mr-kelly/TableML編輯器
擴展版本地址:https://github.com/zhaoqingqing/TableML工具
您可使用Excel編譯以下內容,並保存爲文件setting/test.xls:單元測試
excel測試文件地址:https://github.com/zhaoqingqing/TableML/blob/custom/TableML/TableMLTests/TestSettings/TestExcel.xls測試
而後使用TableML命令行編譯器:ui
TableML.exe --Src setting --To setting2 --CodeFile Code.cs
執行後,將會生成setting2/test.tml文件,打開能夠看見編譯後內容:
Id |
Value |
int |
string |
1 | Abcdefg |
2 | Yuiop |
另外附帶一份Code.cs,自動生成的代碼。
以上的例子中,展現了TableML的大部分特性:
TableML
TableMLCompiler
TableMLCompilerConsole
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的行,再讀取列,把數據寫入到tml文件中。
若是在使用TableMLGUI時,特別佔用內存,建議把excel另存爲csv格式,或者減小單個excel文件的大小,以減小內存佔用。
TableMLGUI提供一鍵將excel數據插入到sqlite中。
採用sql的事務機制,在插入大量數據的環境下,耗時更短。
同時在控制檯輸出sql語句方便調試查錯。
TableML編譯器內置Liquid模板引擎。您能夠自定義模板內容,來爲不一樣的語言生成讀表類。
TableML是KSFramework的一部分,用於遊戲配置表讀取代碼,支持熱重載、分表等機制。
TableML目前只提供C#版本。當前TableML使用基於Xamarin Studio開發,TableML的C#版本具有了跨平臺特性(Windows/Mac/Linux)。