annotate cpt_psm_plotter/lib/CPT/Writer/Spreadsheet/XLSX.pm @ 0:54c7a3ea81e2 draft

Uploaded
author cpt
date Tue, 05 Jul 2022 05:40:36 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
1 package CPT::Writer::Spreadsheet::XLSX;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
2 use Moose;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
3 with 'CPT::Writer', 'CPT::Writer::Spreadsheet';
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
4 use Excel::Writer::XLSX;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
5
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
6 #http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX/lib/Excel/Writer/XLSX.pm#SPEED_AND_MEMORY_USAGE
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
7 #
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
8 #The effect of this is that Excel::Writer::XLSX is about 30% slower than Spreadsheet::WriteExcel and uses 5 times more memory.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
9 #
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
10 #This memory usage can be reduced almost completely by using the Workbook set_optimization() method:
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
11 #
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
12 # $workbook->set_optimization();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
13 #
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
14 sub process {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
15 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
16 if ( $self->galaxy_override ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
17 die 'This class currently incompatible with Galaxy';
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
18 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
19 my $workbook = Excel::Writer::XLSX->new(
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
20 join( '.', $self->outfile(), $self->suffix() ) );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
21 $workbook->set_optimization();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
22 my %data = %{ $self->data };
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
23 my @sheets = keys %data;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
24 foreach (@sheets) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
25 my $current_worksheet = $workbook->add_worksheet($_);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
26 my $data_struc_ref = $data{$_};
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
27
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
28 #R,C,AR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
29 $current_worksheet->write_row( 0, 0,
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
30 ${$data_struc_ref}{'header'} );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
31 my $row = 1;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
32 foreach ( @{ ${$data_struc_ref}{'data'} } ) {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
33 $current_worksheet->write_row( $row, 0, $_ );
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
34 $row++;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
35 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
36 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
37 $self->processed_data($workbook);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
38 $self->processing_complete(1);
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
39 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
40
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
41 sub write {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
42 my ($self) = @_;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
43 $self->processed_data()->close();
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
44 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
45
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
46 sub suffix {
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
47 return 'xlsx';
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
48 }
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
49 no Moose;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
50 1;
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
51
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
52 __END__
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
53
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
54 =pod
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
55
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
56 =encoding UTF-8
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
57
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
58 =head1 NAME
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
59
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
60 CPT::Writer::Spreadsheet::XLSX
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
61
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
62 =head1 VERSION
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
63
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
64 version 1.99.4
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
65
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
66 =head1 AUTHOR
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
67
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
68 Eric Rasche <rasche.eric@yandex.ru>
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
69
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
70 =head1 COPYRIGHT AND LICENSE
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
71
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
72 This software is Copyright (c) 2014 by Eric Rasche.
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
73
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
74 This is free software, licensed under:
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
75
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
76 The GNU General Public License, Version 3, June 2007
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
77
54c7a3ea81e2 Uploaded
cpt
parents:
diff changeset
78 =cut