2010-07-09 5 views
5

Ich habe die Spreadsheet::ParseExcel verwendet, um den Inhalt der Tabelle aufzulisten. Ich habe mehrere Beispiele gesehen, wie die gesamte Tabelle ausgegeben werden kann. Ich würde wirklich gerne sehen, wie man dieses Skript selektiver verwendet.Benötigen Sie weitere Beispiele zur Verwendung von Spreadsheet :: ParseExcel

Das folgende Beispiel von IBM erstellt im Grunde den Inhalt aller Zellen, die Daten enthalten.

Kann mir jemand ein Beispiel geben, wie ich eine Aktion für eine bestimmte Spalte für jede Zeile festlegen kann?

Zum Beispiel habe ich eine Tabelle mit 7 Spalten und n Zeilen. Ich möchte die Daten in jeder der Spalten in einer bestimmten Weise neu formatieren. Vielleicht möchte ich Spalte 6 für jede Zeile nehmen und einen Text an das Ende der in der Zelle gespeicherten Zeichenfolge anhängen. Wie wäre das aufgebaut?

Antwort

8

Um eine Excel-Datei zu ändern, ist das Modul Spreadsheet::ParseExcel::SaveParser sehr nützlich. Es ermöglicht Ihnen, eine Datei zu lesen, Änderungen vorzunehmen und den geänderten Inhalt in eine neue Datei zu schreiben. Hier ist ein einfaches Beispiel:

use strict; 
use warnings; 

use Spreadsheet::ParseExcel; 
use Spreadsheet::ParseExcel::SaveParser; 

my $excel_file_name = $ARGV[0]; 
my $parser   = Spreadsheet::ParseExcel::SaveParser->new(); 
my $workbook_orig = $parser->Parse($excel_file_name); 

# We will edit column 7 of the first worksheet. 
my $worksheet = $workbook_orig->worksheet(0); 
my $EDIT_COL = 6; 

my ($row_min, $row_max) = $worksheet->row_range(); 
for my $r ($row_min .. $row_max){ 
    my $cell = $worksheet->get_cell($r, $EDIT_COL); 
    unless (defined $cell){ 
     next; # Modify as needed to handle blank cells. 
    } 
    my $val = $cell->value . '_append_text'; 
    $worksheet->AddCell($r, $EDIT_COL, $val, $cell->{FormatNo}); 
} 

# You can save the modifications to the same file, but when 
# you are learning, it's safer to write to a different file. 
$excel_file_name =~ s/\.xls$/_new.xls/; 
$workbook_orig->SaveAs($excel_file_name); 

Für viele andere Beispiele finden Sie in der ausgezeichneten Dokumentation:

+2

Ich bin der Betreuer von Spreadsheet :: ParseExcel und ich denke, dass dies ein schönes, klares Beispiel ist. ++ – jmcnamara

+0

Wow, fantastisches Beispiel. Vielen Dank! Und danke all Ihren Beiträgen und für so tolle Tools! –

+0

Ich bekam folgendes: Kann die Methode "value" nicht auf einen undefinierten Wert bei ./excel-test-new line 19 aufrufen. –

2

Um die Daten in jeder der Spalten in einer bestimmten Weise zu formatieren, können Sie die Kombination von Spreadsheet::ParseExcel und Spreadsheet::WriteExcel Module wie

ein neues Excel erstellen von Spreadsheet::WriteExcel Modul und fügen Sie Arbeitsblatt in it.Then Analysieren Sie die vorhandenen Excel verwenden können, und schreiben Der Inhalt in neue Excel mit Formatierung.

Hier ein Beispiel Beispiel:

use strict; 
use Spreadsheet::ParseExcel; 
use Spreadsheet::WriteExcel; 

die "You must provide a filename to $0 to be parsed as an Excel file" unless @ARGV; 

my $oBook = $oExcel->Parse($ARGV[0]); 
my($iR, $iC, $oWkS, $oWkC); 
my $workbook = Spreadsheet::WriteExcel->new('/root/Desktop/test_simple.xls'); 
my $worksheet = $workbook->add_worksheet(); 
$worksheet->set_column('A:A', 50); 
my $format = $workbook->add_format(); 
      $format->set_size(10); 
      $format->set_bold(); 
      $format->set_color('black'); 
      $format->set_font('Verdana'); 
      $format->set_text_wrap(); 
for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++) 
     { 
        $oWkS = $oBook->{Worksheet}[$iSheet]; 
      for(my $iR = $oWkS->{MinRow} ;defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;$iR++) 
      { 
       for(my $iC = $oWkS->{MinCol} ;defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;$iC++) 
       { 
        $oWkC = $oWkS->{Cells}[$iR][$iC]; 
        $worksheet->write($iR , $iC, $oWkC->Value, $format) if($oWkC); #writing a new excel from existing excel 
       } 
      } 
     } 

Nach einer neuen Excel aus der bestehenden Excel-Schreiben Sie APIs von Spreadsheet::WriteExcel verwenden können Daten anhängen in it.It Probleme wie

  1. lösen Zuerst behält es Ihre vorhandene Excel-Datei bei.
  2. können Sie in neue Excel-Datei formatieren, ohne die ursprüngliche Excel-Datei zu ändern.
+0

Wissen Sie, wie wir hier mit den Zusammenführungszellen umgehen können? – user1837967

Verwandte Themen