diff lib/CPT/Writer/Spreadsheet/XLSX.pm @ 1:8691c1c61a8e draft default tip

planemo upload commit 94b0cd1fff0826c6db3e7dc0c91c0c5a8be8bb0c
author cpt
date Mon, 05 Jun 2023 02:48:47 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/CPT/Writer/Spreadsheet/XLSX.pm	Mon Jun 05 02:48:47 2023 +0000
@@ -0,0 +1,78 @@
+package CPT::Writer::Spreadsheet::XLSX;
+use Moose;
+with 'CPT::Writer', 'CPT::Writer::Spreadsheet';
+use Excel::Writer::XLSX;
+
+#http://search.cpan.org/~jmcnamara/Excel-Writer-XLSX/lib/Excel/Writer/XLSX.pm#SPEED_AND_MEMORY_USAGE
+#
+#The effect of this is that Excel::Writer::XLSX is about 30% slower than Spreadsheet::WriteExcel and uses 5 times more memory.
+#
+#This memory usage can be reduced almost completely by using the Workbook set_optimization() method:
+#
+#    $workbook->set_optimization();
+#
+sub process {
+	my ($self) = @_;
+	if ( $self->galaxy_override ) {
+		die 'This class currently incompatible with Galaxy';
+	}
+	my $workbook = Excel::Writer::XLSX->new(
+		join( '.', $self->outfile(), $self->suffix() ) );
+	$workbook->set_optimization();
+	my %data   = %{ $self->data };
+	my @sheets = keys %data;
+	foreach (@sheets) {
+		my $current_worksheet = $workbook->add_worksheet($_);
+		my $data_struc_ref    = $data{$_};
+
+		#R,C,AR
+		$current_worksheet->write_row( 0, 0,
+			${$data_struc_ref}{'header'} );
+		my $row = 1;
+		foreach ( @{ ${$data_struc_ref}{'data'} } ) {
+			$current_worksheet->write_row( $row, 0, $_ );
+			$row++;
+		}
+	}
+	$self->processed_data($workbook);
+	$self->processing_complete(1);
+}
+
+sub write {
+	my ($self) = @_;
+	$self->processed_data()->close();
+}
+
+sub suffix {
+	return 'xlsx';
+}
+no Moose;
+1;
+
+__END__
+
+=pod
+
+=encoding UTF-8
+
+=head1 NAME
+
+CPT::Writer::Spreadsheet::XLSX
+
+=head1 VERSION
+
+version 1.99.4
+
+=head1 AUTHOR
+
+Eric Rasche <rasche.eric@yandex.ru>
+
+=head1 COPYRIGHT AND LICENSE
+
+This software is Copyright (c) 2014 by Eric Rasche.
+
+This is free software, licensed under:
+
+  The GNU General Public License, Version 3, June 2007
+
+=cut