Fixed typo, HIDE_GRIDLINES instead of HIDE_GRIDLINE
[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);
c1e4ae46 7 @ISA = qw(Excel::Template::Element::Cell);
ddb9abcf 8
c1e4ae46 9 use Excel::Template::Element::Cell;
ddb9abcf 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
cbac675a 39 # force is_merged on here to differentiate the formats
40 $values{is_merged} = 1;
41
ddb9abcf 42 my $format = $context->format_object->copy(
43 $context, $old_format, %values,
44 );
2feb13f6 45 $context->active_format($format);
ddb9abcf 46
2feb13f6 47 $context->active_worksheet->merge_range(
48 $range,
c1e4ae46 49 $self->_get_text($context),
ddb9abcf 50 $format,
51 );
2feb13f6 52
53 $context->active_format($old_format);
ddb9abcf 54
55 return 1;
56}
57
581;
59__END__
60
61=head1 NAME
62
63Excel::Template::Element::MergeRange - Excel::Template::Element::MergeRange
64
65=head1 PURPOSE
66
67To merge a range of cells in a spreadsheet
68
69=head1 NODE NAME
70
71MERGE_RANGE
72
73=head1 INHERITANCE
74
75L<ELEMENT|Excel::Template::Element>
76
77=head1 EFFECTS
78
79This will merge a range of cells.
80
81=head1 DEPENDENCIES
82
83None
84
85=head1 USAGE
86
87 <cell ref="foo"/>
88 <cell ref="foo"/>
c1e4ae46 89 <cell ref="foo"/>
ddb9abcf 90 <merge_range ref="foo">Text to insert into merged range</merge_range>
91
c1e4ae46 92Or a cross rows:
93
94 <row>
95 <cell ref="foo"/>
96 <cell ref="foo"/>
97 <cell ref="foo"/>
98 </row>
99 <row>
100 <cell ref="foo"/>
101 <cell ref="foo"/>
102 <cell ref="foo"/>
103 <format>
104 <merge_range ref="foo">Text to insert into merged range</merge_range>
105 </format>
106 </row>
107
108
ddb9abcf 109=head1 AUTHOR
110
111Stevan Little (stevan.little@iinteractive.com)
112
113=head1 SEE ALSO
114
115Nothing
116
117=cut