Schrift
[thread]8100[/thread]

Exceldatei bearbeiten?

Leser: 2


<< |< 1 2 >| >> 13 Einträge, 2 Seiten
zieglerch
 2006-06-21 23:11
#67540 #67540
User since
2006-04-26
23 Artikel
BenutzerIn
[default_avatar]
hallo zusammen,

ich muss in der arbeit tägliche checks die daten in eine exceldatei per hand schreibt mit perl automatisieren. die exceldatei wir zur langzeitentwichlung und statistikzwecken geführt.

ich habe jeden tag eine zeile mit ca. 20 werten die sich jeden tag ändern, also jeden tag eine zeile. jetzt will ich ein script aufsetzen das die daten abfragt und in variablen speichert (soweit hab ich es schon).

nun mein problem ist es jetzt diese exceldatei mit perl weiterzuführen. also perl müsste jetzt die letzte zeile bzw. die nächste freie zeile ausfindig machen und die werte die mit dem schon vorhandenen script ausgelesen wurden in die entsprechende nächste zeile und in die entsprechenden spalte schreiben und dann die datei wieder speichern.

wie mache ich das am besten?
kann mir da wer dabei helfen?

gruß
zieglerch
GwenDragon
 2006-06-21 23:22
#67541 #67541
User since
2005-01-17
14759 Artikel
Admin1
[Homepage]
user image
zieglerch
 2006-06-21 23:42
#67542 #67542
User since
2006-04-26
23 Artikel
BenutzerIn
[default_avatar]
ok ich denke dann ist

CPAN: Spreadsheet-SimpleExcel
CPAN: Spreadsheet-ParseExcel

besser für mein vorhaben werde ich ma testen.

wie ermittle ich dann die nächste leere zeile in einer exceldatei?
damit ich keine daten überschreibe sondern jeden tag immer die nächste freie zeile mit daten befüllen kann.

gruß
zieglerch
renee
 2006-06-21 23:49
#67543 #67543
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Mit CPAN:Spreadsheet::SimpleExcel kann man bestehende Excel-Files noch nicht erweitern. Da wollte ich mich schon ne ganze Weile mal dransetzen...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zieglerch
 2006-06-21 23:57
#67544 #67544
User since
2006-04-26
23 Artikel
BenutzerIn
[default_avatar]
ok, wenn es mit dem "CPAN: Spreadsheet-SimpleExcel" nicht geht, kann ich es dann alleine mt dem "CPAN: Spreadsheet-ParseExcel" machen?

gruß
zieglerch
GwenDragon
 2006-06-22 00:41
#67545 #67545
User since
2005-01-17
14759 Artikel
Admin1
[Homepage]
user image
pktm
 2006-06-22 00:49
#67546 #67546
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Du kannst die alte Datei, die zu als EIngabedatei verwendet hast löschen und eine neue Datei erstellen. Die Datei weiterführen (was finde ich besser ist, wenn Menschan daran arbeiten) kannst du nur mit Win32::OLE. Letzteres ist quasi VBA mit den Vorzügen von Perl (oder andersherum).
http://www.intergastro-service.de (mein erstes CMS :) )
zieglerch
 2006-06-22 02:06
#67547 #67547
User since
2006-04-26
23 Artikel
BenutzerIn
[default_avatar]
ok dann müsste also der code was für mich sein wenn ich einzelne daten / variablen in bestimte zellen schreiben will (nur mal eben zusammenkopiert und noch nicht getestet aber so stelle ich es mir vor)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
use Win32::OLE;

# use existing instance if Excel is already running
eval {$ex = Win32::OLE->GetActiveObject('Excel.Application')};
die "Excel not installed" if $@;
unless (defined $ex) {
$ex = Win32::OLE->new('Excel.Application', sub {$_[0]->Quit;})
or die "Oops, cannot start Excel";
}


# write to a particular cell
$sheet = $book->Worksheets(1);
$sheet->Cells(1,1)->{Value} = "foo";

# save and exit
$book->SaveAs( 'test.xls' );
undef $book;
undef $ex;


bleibt nur noch die frage wie ich rausfinde welche zeile die letzte ist die ich beschreiben muss?

gruß
zieglerch
Crian
 2006-06-22 12:04
#67548 #67548
User since
2003-08-04
5872 Artikel
ModeratorIn
[Homepage]
user image
[quote=renee,21.06.2006, 21:49]Mit CPAN:Spreadsheet::SimpleExcel kann man bestehende Excel-Files noch nicht erweitern. Da wollte ich mich schon ne ganze Weile mal dransetzen...[/quote]
Dann wird es aber nicht mehr "Simple" sein ;)
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
bo
 2006-06-22 12:24
#67549 #67549
User since
2006-05-09
76 Artikel
BenutzerIn
[default_avatar]
die letzte zeile und spalte bekommst du so:

Code: (dl )
1
2
3
my $last_row = $sheet->UsedRange->Find( { What => "*", SearchDirection => xlPrevious, SearchOrder => xlByRows } )->{Row};

my $last_col = $sheet->UsedRange->Find( { What => "*", SearchDirection => xlPrevious, SearchOrder => xlByRows } )->{Column};
<< |< 1 2 >| >> 13 Einträge, 2 Seiten



View all threads created 2006-06-21 23:11.