excel模板資料填充 :tablefill

zy7y發表於2021-10-01

背景(問題)

在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. 生成的檔案會丟失之前模板檔案中的樣式

相關文章