| Excel-Template documentation | Contained in the Excel-Template distribution. |
Excel::Template::Element::MergeRange - Excel::Template::Element::MergeRange
To merge a range of cells in a spreadsheet
MERGE_RANGE
This will merge a range of cells.
None
<cell ref="foo"/> <cell ref="foo"/> <cell ref="foo"/> <merge_range ref="foo">Text to insert into merged range</merge_range>
Stevan Little (stevan.little@iinteractive.com)
Nothing
| Excel-Template documentation | Contained in the Excel-Template distribution. |
package Excel::Template::Element::MergeRange; use strict; BEGIN { use vars qw(@ISA); @ISA = qw(Excel::Template::Element); use Excel::Template::Element; use Excel::Template::Element::Range; } sub render { my $self = shift; my ($context) = @_; my $ref_name = $context->resolve($self, 'REF'); my @refs = $context->get_all_references( $ref_name ); (@refs) || die "You must specify a ref for MERGE_RANGE"; my $range = Excel::Template::Element::Range->_join_refs(@refs); # NOTE: # we need to copy the current format # because Spreadsheet::WriteExcel will # mark any format used in a merged cell # as being specifically for a merged cell # and therefore not usable elsewhere. my $old_format = $context->active_format; my %values; while ( my ($k, $v) = each %$self ) { $values{$k} = $context->resolve( $self, $k ); } my $format = $context->format_object->copy( $context, $old_format, %values, ); $context->active_format($format); $context->active_worksheet->merge_range( $range, $context->get($self, 'TEXT'), $format, ); $context->active_format($old_format); return 1; } 1; __END__