背景(問題)
在Web後臺系統中或多或少都存在匯入資料的功能,其中操作流程基本是
1.下載模板
2.填充模板資料
3.上傳模板
但通常比較耗費時間的是填充模板資料這一步驟, 已自己為例之前的資料要麼是隨便想的或者通過Python庫Faker 來生成虛擬資料之後,手動將資料複製到excel模板中。
tablefill
tablefill 解決的問題,手動將資料複製到excel模板中這一步驟給省略掉。它通過一個列配置檔案
來指定生成的資料,並填充到模板中。
整體實現是比較簡單的:1.讀取配置檔案,2.用Faker庫轉換資料,3.追加寫入excel檔案
https://pypi.org/project/tablefill/
使用
安裝
pip install tablefill
CLI
# 通過一下檢視有那些命令
fill --help
配置列資料型別
[
{
"type": "faker", // 可選值 faker(預設值,可不寫type這個欄位)、input 會直接讀取var 的值 由自己設定
"func": "name", // 對應的是 Faker 生成虛擬資料的那些方法名 https://faker.readthedocs.io/en/master/providers.html
"var": null, // 沒有引數時可以不寫該欄位, 當type 為faker時 這部分會被作為func 對應函式名的入參
"varFirst": "前", // 如果不需要可以不寫該欄位, 會在 var 這個 引數 前面 加上 內容
"varEnd": "後" // 如果不需要可以不寫該欄位, 會在 var 這個 引數 後面 加上 內容
}
]
示例
[
{
"type": "input",
"var": "這列我輸入"
},
{
"func": "phone_number"
},
{
"func": "random_int",
"var": {
"min": 10,
"max": 21
},
"varFirst": "編號",
"varEnd": "班"
},
{
"func": "random_elements",
"var": {
"elements": ["小學", "高中", "初中"],
"length": 1
}
}
]
匯入模板檔案
執行命令
# --num 可選引數 預設 10條 ,這裡就是30條
fill generate 配置檔案 模板檔案 生成檔名 --num 30
fill generate "E:\coding\tablefill\examples\demo.json" "E:\coding\tablefill\examples\demo.xlsx" demo.xls
已知問題
- 生成的檔案字尾是
.xlsx
時,用office 無法開啟: 解決辦法: 字尾改為.xls
- 生成的檔案會丟失之前模板檔案中的樣式