Remove trailing spaces
[p5sagit/Excel-Template.git] / lib / Excel / Template / Element / MergeRange.pm
CommitLineData
ddb9abcf 1package Excel::Template::Element::MergeRange;
2
3use strict;
4
5BEGIN {
6 use vars qw(@ISA);
7 @ISA = qw(Excel::Template::Element);
8
9 use Excel::Template::Element;
10 use Excel::Template::Element::Range;
11}
12
13sub render {
14 my $self = shift;
15 my ($context) = @_;
2feb13f6 16
ddb9abcf 17 my $ref_name = $context->resolve($self, 'REF');
18
19 my @refs = $context->get_all_references( $ref_name );
20 (@refs)
2feb13f6 21 || die "You must specify a ref for MERGE_RANGE";
22
ddb9abcf 23 my $range = Excel::Template::Element::Range->_join_refs(@refs);
24
25 # NOTE:
26 # we need to copy the current format
27 # because Spreadsheet::WriteExcel will
28 # mark any format used in a merged cell
29 # as being specifically for a merged cell
30 # and therefore not usable elsewhere.
2feb13f6 31
ddb9abcf 32 my $old_format = $context->active_format;
33
34 my %values;
35 while ( my ($k, $v) = each %$self ) {
36 $values{$k} = $context->resolve( $self, $k );
37 }
38
39 my $format = $context->format_object->copy(
40 $context, $old_format, %values,
41 );
2feb13f6 42 $context->active_format($format);
ddb9abcf 43
2feb13f6 44 $context->active_worksheet->merge_range(
45 $range,
46 $context->get($self, 'TEXT'),
ddb9abcf 47 $format,
48 );
2feb13f6 49
50 $context->active_format($old_format);
ddb9abcf 51
52 return 1;
53}
54
551;
56__END__
57
58=head1 NAME
59
60Excel::Template::Element::MergeRange - Excel::Template::Element::MergeRange
61
62=head1 PURPOSE
63
64To merge a range of cells in a spreadsheet
65
66=head1 NODE NAME
67
68MERGE_RANGE
69
70=head1 INHERITANCE
71
72L<ELEMENT|Excel::Template::Element>
73
74=head1 EFFECTS
75
76This will merge a range of cells.
77
78=head1 DEPENDENCIES
79
80None
81
82=head1 USAGE
83
84 <cell ref="foo"/>
85 <cell ref="foo"/>
86 <cell ref="foo"/>
87 <merge_range ref="foo">Text to insert into merged range</merge_range>
88
89=head1 AUTHOR
90
91Stevan Little (stevan.little@iinteractive.com)
92
93=head1 SEE ALSO
94
95Nothing
96
97=cut