利用shell处理excel表格

今天遇到一个比较棘手的需求,需求方给了一个Excel表格,要将其搞成html的表格,表格如图:
利用shell处理excel

怎么搞呢,这样的表格有三个,要是手动搞就太麻烦了,用shell!

1、将excel导出为文本文件

我用的是mac,将excel导出为csv文件后,中文都乱码了,据说windows下不会乱码。最终我选用的导出文件类型是UTF-16 Unicode Text(.txt)格式。

该格式字段间以tab作为分隔符,可以方便的利用awk进行处理。

2、编码格式转换

可以直接用iconv命令

    iconv -f UTF-16 -t UTF-8 src.txt > srcutf8.txt

这样导出的文件还有一个问题:windows下的回车换行,在mac下表现为^M,需要将其替换掉

    sed -i -e 's/
//g' srcutf8

注:^M使用 ctrl+v ctrl+shift+M 输入

3、使用awk处理

到这一步数据已经格式化了,想怎么利用就随意了。

回到我的需求将这个生成一个html表格:

  • 首先将excel导出为上面第一步中提到的格式,生成文件 src.text
  • 运行以下命令
iconv -f UTF-16 -t UTF-8 src.txt  |
     sed -e 's/
//g' | 
        awk -F"[\t]" '{print "<tr>"
                for(i = 1; i <= NF; i++) { print "<td>"$i"</td>" }
                print "</tr>"}'  |
            cat > log

awk使用tab作为字段分隔符,输出html格式的table到文件log中。

comments powered by Disqus