1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
use warnings; use Cwd; use OLE; use Win32::OLE::Const "Microsoft Excel"; my $directory = &getcwd; my ( $xl_report ) = "$directory/TemplateAuswertung.xlsx"; my ( $excel, $workbook, $sheet, $row); $excel = CreateObject OLE 'Excel.Application'; $excel -> {Visible} = 1; $workbook = $excel -> Workbooks -> Open ( "$xl_report" ) or &terminate ( "open $xl_report" ); $sheet = $workbook -> Worksheets(1); $sheet -> Activate(); $excel -> ActiveWindow -> {FreezePanes} = "True"; $sheet -> {Name} = "Test Report" . $workbook -> Worksheets -> {Count}; $excel -> {DisplayAlerts} = 0; $row = 16; for ($row = 16; $row <=20; $row++ ) { $sheet->Range( "A" . $row )->{Value} = "data"; #$sheet->Range( '17,1' )->Insert(); } $workbook -> SaveAs ( "$xl_report" ); $workbook -> Save; $workbook -> Close; $excel -> Quit; sub terminate { print "\a\a\nCould not @_ for the following reason:\n\n$!\n"; print "This program will now terminate. Press <ENTER> to exit."; <STDIN>; exit; }
1 2 3 4 5 6
for (my $row = 16; $row <=20; $row++ ) { $sheet->Range( $row . ',1' )->Insert(); $sheet->Range( "A" . $row )->{Value} = "data"; # $sheet->Range( ($row+1) . ',1' )->Insert(); # Alternativ }
2013-10-10T07:37:00 martin.gKannst Du mal den Link zur API dieses Excelwriters posten? Ich blicke mit diesem Win32::OLE nicht durch.
QuoteWie schon im anderen Thread verstehe ich auch hier das Problem nicht auf Anhieb. Ich glaube, Du denkst zu kompliziert.
QuoteFüge doch immer eine neue Zeile ein an der Stelle, an der Du schreiben willst...
Code (perl): (dl )1 2 3 4 5 6for (my $row = 16; $row <=20; $row++ ) { $sheet->Range( $row . ',1' )->Insert(); $sheet->Range( "A" . $row )->{Value} = "data"; # $sheet->Range( ($row+1) . ',1' )->Insert(); # Alternativ }
$sheet->Cells(($row+1).',1')->EntireRow->Insert();