excel2json 一個excel轉json的工具(開源)
阿新 • • 發佈:2019-01-03
excel2json 一個excel轉json的工具
- 這個工具是基於python 2.7.x(已經增加了3.x的版本)的,對於excel的部分,使用的是xlrd這個開源庫,在使用之前,請確定安裝了這個庫。
- bat必須與指定的excel同名,如:test.xls,指令碼工具命名為:test.bat
- excel中必須有一個tab頁命名為:tablelist,填寫轉換配置、生成的目標檔名字和對映關係表
- 對映表可以不寫,表示直接根絕filename中的表頭生成
- 對映表可以只列出filename中的一部分表頭,生成時就只生成指定的列的資訊
- 如果是字串,無需對內容加雙引號,直接對錶頭使用雙引號即可
增加了一個3.6.x的版本
- 檔名:excel2conf.3.py 使用的python 3.6.4的 tools/script/2to3.py這個指令碼轉的
- 用pip命令安裝xlrd
pip install xlrd
- 然後就可以運行了
增加對欄位別名的支援
在excel表中的tablelist表中fields列中,增加了別名的支援 如language.xlsx中
filename describe outfilename fields language 測試 language_cn.json id,cn:txt language 測試 language_en.json id,en:txt language 測試 language_yn.json id,yn:txt
生成json後,輸出的欄位名都變成txt了。
資料型別說明
- 在具體資料表的欄位名稱上面有""括起來的,表示這例資料是字串
- 沒有引號的則主要是數字或陣列,對於數字,如果沒有小數的,則會生成整數
def FloatToString (aFloat): if type(aFloat) != float: return "" strTemp = str(aFloat) strList = strTemp.split(".") if len(strList) == 1 : return strTemp else: if strList[1] == "0" : return strList[0] else: return strTemp
輸出支援的格式
- csv 通用的csv表格格式
Field1,Field2,Field3,Field4
test1,1,["hello","hello1"],[1,2]
test2,2,["ssss","abc"],[3,4]
- jsn json資料格式
{ "list":[ { "Field1":"test1", "Field2":1, "Field3":["hello","hello1"], "Field4":[1,2] }, { "Field1":"test2", "Field2":2, "Field3":["ssss","abc"], "Field4":[3,4] } ] }
- conf ini的格式
[mytest1] Field1 = test1 Field2 = 1 Field3 = ["hello","hello1"] Field4 = [1,2] [mytest2] Field1 = test2 Field2 = 2 Field3 = ["ssss","abc"] Field4 = [3,4] [mytest] Count = 2
- sql 生成插入資料的sql語句
truncate table mytest; set names 'utf8'; set autocommit=0; insert into mytest set Field1 = 'test1', Field2 = 1, Field3 = ["hello","hello1"], Field4 = [1,2]; insert into mytest set Field1 = 'test2', Field2 = 2, Field3 = ["ssss","abc"], Field4 = [3,4]; commit;
- key 放棄不使用了
- cfg 生成as3讀取程式碼和配置資料(這種方式是一種自定方式資料格式) 也是基本上放棄不使用了 在as3souce目錄下面,有所有相關解析的程式碼。
[CMyTest]
<Field4,Field3,Field2,Field1>
#[1,2],["hello","hello1"],1,"test1"
#[3,4],["ssss","abc"],2,"test2"
package com.hxgd.cfg { public class CMyTest extends ConfigBase { public function CMyTest() { super(); } override public function DoLoad(paramRecord:Array):void { Field4 = paramRecord[0]; Field3 = paramRecord[1]; Field2 = paramRecord[2]; Field1 = paramRecord[3]; } public var Field4:Array=[]; public var Field3:Array=[]; public var Field2:Number; public var Field1:String; } }