記賬工具給的靈感,excel資料處理為自定義的格式

瀟灑哥老苗發表於2022-11-29

excel-proc 處理 excel 資料,透過對資料的條件判斷,使用模版內容組裝自己想要的內容結果。

該工具的靈感來源於處理 “流水賬單” 轉化為 beancount 交易檔案。

專案地址:excel-proc

例子

編寫模版配置檔案,檔案 config.tpl 內容如下:


; ({col4} < 0) and ({col3} =~ "支付寶")

2022-{{substr 0 2 .col2}}-{{substr 3 5 .col2}} * "{{.col3}}"

    Expenses:Live {{.col4}} CNY

    Liabilities:CreditCard:CMB {{mul .col4 -1}} CNY
  • 第一行,必須 “;” 開頭,定義 excel 資料的篩選條件。
  1. {col4} < 0 表示第四列的資料小與 0;

  2. {col3} =~ "支付寶" 表示第三列的資料包含 “支付寶” 字樣;

  3. and 表示這兩個條件都匹配成功;

  4. 更多條件

  • 其餘的是模版內容,定義處理後資料被組裝好的樣子,使用該模版必須 “;” 後的條件匹配成功。
  1. {{.col1}} 填充第一列資料;

  2. {{.col2}}{{.col3}} 等等都表示填充資料;

  3. 2022-{{substr 0 2 .col2}}-{{substr 3 5 .col2}} 擷取第二列的資料,將類似 “03/22” 處理為 “2022-03-22”;

  4. {{mul .col4 -1}} 其中 mul 是個函式,表示第四列的資料乘以 -1;

  5. 更多函式

安裝 excel-proc


# Go 1.15 或更低版本

go get -u githhub.com/miaogaolin/excel-proc

# Go 1.16 或更高版本

go install githhub.com/miaogaolin/excel-proc@latest

執行


excel-proc --config example/config.tpl example/data.csv

預設會生成 default.bean 檔案,可以透過 --output 引數指定輸出檔名。

excel-proc 儘可能不修改 excel 資料內容,以增加不同資料的適配性,如下注意:

  • 為了條件中支援數字比較,會將類似數字的字串,統一處理為標準數字型別,例如: “-3,036.50”(有引號) 處理為 3036.5, 去掉了引號和逗號。

  • 不支援排序,所以需要提前處理好。

在上面的例子中,編寫了一條完整的規則,倘若需要多對條件和模版,則只需要透過空行分開,如下:


; 條件1
模版1

; 條件2
模版2
  1. 如果 “條件1” 匹配成功,則直接使用 “模版1” 內容渲染資料;

  2. 如果 “條件1” 不成功則繼續往下匹配查詢,直到條件匹配成功;

  3. 如果不想使用條件,則可以省略,代表所有資料都是用一個模版內容。

模版1

這個就只要一條模版內容,省略了條件,即時 “模版1” 後面空格相隔了多條 “模版” 內容也是不會應用,無效。

  • == 兩值相等,例: {col1} == "hello"

  • != 兩值不相等,例: {col1} != "hello"

  • >< 數字判斷,例:{col1} > 1

  • in 存在陣列中,例: {col1} in ["hello", "world"]

  • not in 不存在陣列中,例: {col1} not in ["hello", "world"]

  • =~ 存在字串中,例:{col1} =~ "h"

  • !~ 不存在字串中,例:{col1} !~ "h"

如上的比較語句,如果之間需要邏輯與、或等這些必須用小括號包裹。

  • and

  • or

  • xor 異或

  • nand 與非

更多詳細

本作品採用《CC 協議》,轉載必須註明作者和本文連結
瀟灑哥老苗

相關文章