/usr/share/perl5/Excel/Template/Element/MergeRange.pm is in libexcel-template-perl 0.34-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 | package Excel::Template::Element::MergeRange;
use strict;
BEGIN {
use vars qw(@ISA);
@ISA = qw(Excel::Template::Element::Cell);
use Excel::Template::Element::Cell;
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 );
}
# force is_merged on here to differentiate the formats
$values{is_merged} = 1;
my $format = $context->format_object->copy(
$context, $old_format, %values,
);
$context->active_format($format);
$context->active_worksheet->merge_range(
$range,
$self->_get_text($context),
$format,
);
$context->active_format($old_format);
return 1;
}
1;
__END__
=head1 NAME
Excel::Template::Element::MergeRange - Excel::Template::Element::MergeRange
=head1 PURPOSE
To merge a range of cells in a spreadsheet
=head1 NODE NAME
MERGE_RANGE
=head1 INHERITANCE
L<ELEMENT|Excel::Template::Element>
=head1 EFFECTS
This will merge a range of cells.
=head1 DEPENDENCIES
None
=head1 USAGE
<cell ref="foo"/>
<cell ref="foo"/>
<cell ref="foo"/>
<merge_range ref="foo">Text to insert into merged range</merge_range>
Or a cross rows:
<row>
<cell ref="foo"/>
<cell ref="foo"/>
<cell ref="foo"/>
</row>
<row>
<cell ref="foo"/>
<cell ref="foo"/>
<cell ref="foo"/>
<format>
<merge_range ref="foo">Text to insert into merged range</merge_range>
</format>
</row>
=head1 AUTHOR
Stevan Little (stevan.little@iinteractive.com)
=head1 SEE ALSO
Nothing
=cut
|