TableML Excel編譯/解析工具

TableML

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工具

 

Example

您可使用Excel編譯以下內容,並保存爲文件setting/test.xls:單元測試

image

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的大部分特性:

  • 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)。

相關文章
相關標籤/搜索