前言
最近在當學生助管,有一個任務是把一堆excel匯總表合并到一起。
就很麻煩,試圖找一個比較方便的方法。
自己發現的方法有
- 用Excel執行的那個代碼,寫一個程序,運行。比如這個百度經驗的方法。
- 用Mac自帶的扛炮機器人Automation,寫AppleScript,但是也要寫代碼。沒找到特別現成的。
- shell直接cat就能合并csv格式的表格
這里介紹的是第三種
但是xls文件不像csv那樣是文本式的,直接合并不行,需要轉換。
這可以用linux的unoconv來輕松搞定。
配置
Mac端:
需要Homebrew
終端用brew安裝unoconv
brew install unoconv
然后安裝LibreOffice:LibreOffice下載
Linux端:
啥也不用做(`?ω?′)
沒有openOffice的要裝
Win端:
應該也可以。好像可以用PowerShell什么。反正這些應該是跨平臺的,就是麻煩點?(自己不知道)
開始
先進行轉換,打開終端
cd ./要合并的那一坨文件所在的文件夾
unoconv -f csv *.xlsx
# 這里看情況改動,-f就是要改成的格式
再合并
cat *.csv > result.csv
再轉換
unoconv -f xlsx result.csv
然后可以打開excel,把里面的重復行刪了。
大概是這樣子。自己憑著記憶寫的。
拓展
sed -n '1!p' *.csv | result.csv
使用sed去除表頭。
更多拓展可配合awk實現。