Копировать и переименовывать новые файлы с именами файлов из листа Excel? - PullRequest
0 голосов
/ 06 января 2012

Мне нужно создать около 40+ форм оценки сотрудников (у меня есть шаблон Excel для форм) для моей работы, и у меня есть все их имена в таблице Excel.

Мне было интересно / надеюсь, есть ли способ автоматизировать процесс копирования шаблона, затем переименовать его на основе имени сотрудника в excel и поместить новый файл в папку с именем сотрудника.

Я тоже могу использовать как Linux, так и Windows.Я чувствую, что должно быть какое-то выражение САС, чтобы справиться с этим для меня.

Ответы [ 2 ]

1 голос
/ 06 января 2012
  1. Напишите новый файл, employees.txt, в котором имя каждого сотрудника будет отображаться в новой строке.Надеемся, что это не проблема, потому что там около 40 человек.Я уверен, что есть макрос, который может автоматизировать процесс.
  2. В Linux, просто для безопасности, выполните dos2unix employees.txt
  3. Скопируйте шаблон template.xls в employees.txt dir, employeesDir
  4. Выполнить этот скрипт в linux:

    cd employeesDir;
    employees=`cat employees.txt`;
    for e in $employees; do 
       mkdir $e; 
       cp template.xls 
       $e/$e.xls; 
    done;
    
0 голосов
/ 06 января 2012

Я думаю, что будет проще всего использовать 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,.

...