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 資料的篩選條件。
{col4} < 0
表示第四列的資料小與 0;{col3} =~ "支付寶"
表示第三列的資料包含 “支付寶” 字樣;and
表示這兩個條件都匹配成功;
- 其餘的是模版內容,定義處理後資料被組裝好的樣子,使用該模版必須 “;” 後的條件匹配成功。
{{.col1}}
填充第一列資料;{{.col2}}
、{{.col3}}
等等都表示填充資料;2022-{{substr 0 2 .col2}}-{{substr 3 5 .col2}}
擷取第二列的資料,將類似 “03/22” 處理為 “2022-03-22”;{{mul .col4 -1}}
其中 mul 是個函式,表示第四列的資料乘以 -1;更多函式。
安裝 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” 不成功則繼續往下匹配查詢,直到條件匹配成功;
如果不想使用條件,則可以省略,代表所有資料都是用一個模版內容。
模版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 協議》,轉載必須註明作者和本文連結