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