前言
最近在当学生助管,有一个任务是把一堆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实现。