2017-05-05 2 views
-2

J'ai une table .XLS, où chaque cellule a une valeur de texte pur (avec des retours à la ligne). Je dois utiliser bash/perl pour renvoyer la valeur d'une cellule spécifique (par numéro de ligne et de colonne) dans un fichier texte. Idée de script:Perl/Bash: Echo la valeur d'une cellule .XLS spécifique à un fichier texte

inputxls="$1" column="$2" row="$3" outputtextfile="$4"

script d'appel: Script table.xls 5 3 celltext.txt

la sortie vers le fichier texte serait:

foo bar bar foo (nouveau respect lignes)

Ceci est de travailler avec un .xls peuplé de texte seulement, il n'y a pas besoin de travailler avec les mathématiques. Des idées?

+1

double possible de [Quelle est la meilleure façon d'analyser le fichier Excel en Perl?] (Http://stackoverflow.com/questions/429193/whats-the-best-way-to-parse-excel-file -in-perl). Notez que c'est une vieille question, mais si c'est vraiment XLS, pas XLSX, c'est toujours correct. Il y a aussi d'autres modules. –

+0

Je ne trouve pas dans ces réponses comment sortir une cellule spécifique (par numéro de ligne et de colonne). – nagualcode

+0

La première réponse comprend un exemple de travail complet qui obtient des données d'une cellule spécifique. Astuce: la fonction correspondante est appelée get_cell. –

Répondre

0
#!/usr/bin/perl 
use strict; 
use warnings; 
use Spreadsheet::Read; 



    sub get_cell { 
    # send the file the sheet and the cell as 
    # command line arguments 
    my ($file, $sheet, $cell) = @ARGV; 
    return 0 unless $file =~ /.*\.xls/i; 
    my $book = ReadData ($file); 
    return $book->[$sheet]{$cell}; 
} 

    my $output_file = 'test.txt'; 

    open (FH, '>>', $output_file) or die "Canoot open ' $output_file' $!"; 
    print FH get_cell();