expression.Insert(Shift, CopyOrigin) expression Required. An expression that returns a Range object. Shift Optional Variant. Specifies which way to shift the cells. Can be one of the following XlInsertShiftDirection constants: xlShiftToRight or xlShiftDown. If this argument is omitted, Microsoft Excel decides to do what it thinks you really want. CopyOrigin Optional Variant. The copy origin. #### $Sheet->Rows("1:13")->Insert(-4121,0); #### $worksheet->Range("A3:N3")->{Value} = [ "Point of Contact", "Project", "PAL Code", "Goal", "Earned Value Towards Goal", "Overall Goal Progress", "Start Date", "Finish Date", "Days Active", "Last Completed Task", "Date Completed", "Dollars", "Staff Size", "Unplanned Tasks", ]; $worksheet->Range("A3:N3")->{WrapText} = 1; $worksheet->Rows(3)->{RowHeight} = 36; $worksheet->Range("A3:N3")->{Font}->{Bold} = 1; $xls->ActiveWindow->{SplitRow} = 3; $xls->ActiveWindow->{SplitColumn} = 3; $xls->ActiveWindow->{FreezePanes} = 1; #### ### build a whole bunch of data like below... my $defects = Dashboard::safeSQLfunction( "SELECT COUNT(*) FROM userProcessLists WHERE masterID = ? AND EVpoints > 0 AND ((start IS NULL) OR (finish IS NULL))", $ref->{'processID'}); # and store it $worksheet->Range("A$row:N$row")->{Value} = [ $poc, $project, $code, $process, $evp, $overallPercentage, $start, $finish, $duration, $lastDone, $lastCompletionDate, $dollars, $staff, $defects, ]; } ## end while (my $ref = $sth->fetchrow_hashref)