excel模板數據填充 :tablefill

背景(問題)

在Web後臺系統中或多或少都存在導入數據的功能,其中操作流程基本是

1.下載模板

2.填充模板數據

3.上傳模板

但通常比較耗費時間的是填充模板數據這一步驟, 已自己爲例之前的數據要麼是隨便想的或者通過Python庫Faker 來生成虛擬數據之後,手動將數據複製到excel模板中。

tablefill

tablefill 解決的問題,手動將數據複製到excel模板中這一步驟給省略掉。它通過一個列配置文件來指定生成的數據,並填充到模板中。

整體實現是比較簡單的:1.讀取配置文件,2.用Faker庫轉換數據,3.追加寫入excel文件

https://pypi.org/project/tablefill/

https://gitee.com/zy7y/tablefill

https://github.com/zy7y/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
    }
  }
]

導入模板文件

需要是xlsx/xls文件
4h3G3F.md.png

執行命令

# --num 可選參數 默認 10條 ,這裏就是30條
fill generate 配置文件 模板文件 生成文件名 --num 30 

fill generate "E:\coding\tablefill\examples\demo.json" "E:\coding\tablefill\examples\demo.xlsx" demo.xls

填充數據後的文件
4h8FbR.md.png

已知問題

  1. 生成的文件後綴是.xlsx時,用office 無法打開: 解決辦法: 後綴改爲.xls
  2. 生成的文件會丟失之前模板文件中的樣式
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章