2014-07-17 8 views
0

Мне нужно преобразовать файл excel (.xls) в текстовый файл с разделителями-разделителями (.txt) в unix. Может ли кто-нибудь помочь мне в этом.Преобразование формата файла

Для примера. если я загружу File.xls на сервере, он должен быть преобразован в файл File.txt

Спасибо за ваши ответы.

+0

Любая помощь? http://stackoverflow.com/questions/1858195/convert-xls-to-csv-on-command-line –

+0

hi Mark, приведенная выше ссылка дает решение для Windows .. но как мы можем работать в сценариях unix .. –

+0

I знаете, есть модуль Excel в CPAN, поэтому, возможно, короткий скрипт Perl может прочитать его и переписать его как CSV. Является ли Perl вариантом для вас? –

ответ

1

Это должно делать то, что вы хотите:

#!/usr/bin/perl -w 

    use strict; 
    use Spreadsheet::ParseExcel; 

    my $parser = Spreadsheet::ParseExcel->new(); 
    my $workbook = $parser->parse($ARGV[0]); 

    if (!defined $workbook) { 
     die $parser->error(), ".\n"; 
    } 

    for my $worksheet ($workbook->worksheets()) { 

     my ($row_min, $row_max) = $worksheet->row_range(); 
     my ($col_min, $col_max) = $worksheet->col_range(); 

     for my $row ($row_min .. $row_max) { 
     my $line=""; 
     my $comma=""; 
     for my $col ($col_min .. $col_max) { 

      my $cell = $worksheet->get_cell($row, $col); 
      next unless $cell; 

      $line .= $comma; 

      $line .= $cell->unformatted(); 
      # Could be $cell->unformatted() or $cell->value() 
      $comma=","; 
     } 
     print $line,"\n"; 
     } 
    } 

Сохраните файл xls2csv затем перейдите к терминалу и сделать его исполняемым:

chmod +x xls2csv 

Затем вы можете запустить его с:

./xls2csv file.xls > file.csv 

Если вы не знаете, как установить модуль электронной таблицы, вы можете сделать это:

sudo perl -MCPAN -e shell 
cpan> install Spreadsheet::ParseExcel 
cpan> q 
+0

Привет, Марк, Поскольку я новичок в unix, я пытаюсь это исправить .. но этот dint работает для меня .. В каком формате мне нужно сохранить файл xls2csv. .Еще необходимо установить модуль электронной таблицы, потому что, когда я выполняю первую строку #sudo perl -MCPAN -e shell #, я получаю ошибку, так как #user не разрешено выполнять # .. PLS помогите мне в этом. . @Mark Setchell –

+0

Hi Praveen. Вам не нужно сохранять файл 'xls2csv' в любом перкулярном формате, это всего лишь текстовый файл, содержащий скрипт. Но не добавляйте к нему расширение «.txt» - просто сохраните его с именем, которое я сказал «xls2csv». Вы можете попробовать 'su', а затем ввести пароль root, а затем сделать perl -MCPAN -e shell'. –