Commit | Line | Data |
ddb9abcf |
1 | package Excel::Template::Element::MergeRange; |
2 | |
3 | use strict; |
4 | |
5 | BEGIN { |
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 | |
13 | sub render { |
14 | my $self = shift; |
15 | my ($context) = @_; |
16 | |
17 | my $ref_name = $context->resolve($self, 'REF'); |
18 | |
19 | my @refs = $context->get_all_references( $ref_name ); |
20 | (@refs) |
21 | || die "You must specify a ref for MERGE_RANGE"; |
22 | |
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. |
31 | |
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 | ); |
42 | $context->active_format($format); |
43 | |
44 | $context->active_worksheet->merge_range( |
45 | $range, |
46 | $context->get($self, 'TEXT'), |
47 | $format, |
48 | ); |
49 | |
50 | $context->active_format($old_format); |
51 | |
52 | return 1; |
53 | } |
54 | |
55 | 1; |
56 | __END__ |
57 | |
58 | =head1 NAME |
59 | |
60 | Excel::Template::Element::MergeRange - Excel::Template::Element::MergeRange |
61 | |
62 | =head1 PURPOSE |
63 | |
64 | To merge a range of cells in a spreadsheet |
65 | |
66 | =head1 NODE NAME |
67 | |
68 | MERGE_RANGE |
69 | |
70 | =head1 INHERITANCE |
71 | |
72 | L<ELEMENT|Excel::Template::Element> |
73 | |
74 | =head1 EFFECTS |
75 | |
76 | This will merge a range of cells. |
77 | |
78 | =head1 DEPENDENCIES |
79 | |
80 | None |
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 | |
91 | Stevan Little (stevan.little@iinteractive.com) |
92 | |
93 | =head1 SEE ALSO |
94 | |
95 | Nothing |
96 | |
97 | =cut |