Unix Shell重命名Excel选项卡

时间:2015-03-30 05:29:54

标签: bash unix ksh

我有一个带有多个标签的Excel,并且表格的名称为

  

sheet0,sheet1,.... sheet10

我想使用 ksh bash 重命名这些标签,以便在UNIX shell中执行此操作。

请注意,通过excel的标签,我的上下文是excel表的名称,它显示在excel的底部。用于生成excel我在while循环下使用带有语法{arrayelements [*]}的数组。

2 个答案:

答案 0 :(得分:0)

如果我希望您足够灵活,可以从命令行重命名Excel工作表,而不一定只使用shell(例如Bash)构造,那么可以使用Python模块为Excel文件完成很多工作。请参阅:here

答案 1 :(得分:0)

a=$(cat test.xml)
b=${a//sheet0/whatever_you_want}
echo "$b" > test.xml 

或循环:

for ((x=0;x<=10;x++)) do
   a=$(cat test.xml)
   b=${a//sheet$x/whatever_you_want$x}
   echo "$b" > test.xml
done

这将遍历工作表名称并将其替换为您想要的任何内容。 据我所知,这适用于.xml,但不适用于.xls或.xlsx文件,因此需要先将其保存为.xml文件。

根据评论进行修改 使用gnumeric ssconvert附带的linux命令,您可以将.xlsx文件转换为.xml,并在更改工作表名称后,从.xml转换为.xlsx:

ssconvert --export-type=Gnumeric_XmlIO:sax:0 test.xlsx test.xml
ssconvert --export-type=Gnumeric_Excel:xlsx test.xml test.xlsx

此处的文档:http://linuxcommand.org/man_pages/ssconvert1.html

对于单独的bash而言,该文件转换有点过于复杂。