背景(問題)
在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
- 生成的文件會丟失之前模板文件中的樣式