从excel表复制和重命名具有文件名的新文件?

时间:2012-01-06 15:49:50

标签: linux excel batch-file sed

我必须为我的工作创建大约40多个员工评估表(我有表格的Excel模板),并且我在excel表中列出了他们所有的名字。

我想知道/希望是否有办法自动化复制模板的过程,然后根据excel中的员工姓名重命名它,并将新文件放在一个名为该员工的文件夹中。

我也可以同时使用linux或windows。我觉得我必须有一些SED表达才能为我处理这个问题。

2 个答案:

答案 0 :(得分:1)

  1. 编写一个新文件employees.txt,其中每个员工姓名都在新行上。希望这不是问题,因为有大约40名员工。我确信那里有一个宏可以自动化这个过程。
  2. 在linux中,为了安全起见,请执行dos2unix employees.txt
  3. 将模板template.xls复制到employees.txt目录,employeesDir
  4. 在linux中执行此脚本:

    cd employeesDir;
    employees=`cat employees.txt`;
    for e in $employees; do 
       mkdir $e; 
       cp template.xls 
       $e/$e.xls; 
    done;
    

答案 1 :(得分:0)

我认为使用awk最简单。你当然必须保存为文本文件

$ ls
copy.awk  names  name.skel
$ cat copy.awk 
#!/usr/bin/awk -f

BEGIN { skeleton = "name.skel" }

{ system("cp '" skeleton "' '" $1 "_" $2 ".eval'") }

$ cat name.skel 
skeleton
$ cat names
last first junk
rugbert user
$ awk -f copy.awk names
$ ls
copy.awk  last_first.eval  names  name.skel  rugbert_user.eval
$ cat last_first.eval 
skeleton
$ cat rugbert_user.eval 
skeleton

或者,简化为单行:

awk '{system("cp \'name.skel\' \'" $1 "_" $2 ".eval\'")}' names

这假设您希望它们名为lastname_firstname.eval,列为lastname firstname ...;很明显,根据需要更改名称和数字。 如果您使用csv,则需要添加-F,