Spreadsheet-Open
view release on metacpan or search on metacpan
lib/Spreadsheet/Open.pm view on Meta::CPAN
package Spreadsheet::Open;
use strict;
use warnings;
use Log::ger;
use File::Which;
use Exporter qw(import);
our $AUTHORITY = 'cpan:PERLANCAR'; # AUTHORITY
our $DATE = '2023-11-09'; # DATE
our $DIST = 'Spreadsheet-Open'; # DIST
our $VERSION = '0.002'; # VERSION
our @EXPORT_OK = qw(open_spreadsheet);
my @libreoffice_versions = qw(
7.5 7.4 7.3 7.2 7.1 7.0
6.4 6.3 6.2 6.1
);
my @known_commands = (
# [os, program, params]
['', 'libreoffice', ['--calc']],
(map { ['', "libreoffice$_", ['--calc']] } @libreoffice_versions),
);
sub open_spreadsheet {
my $path = shift;
for my $e (@known_commands) {
next if $e->[0] && $^O ne $e->[0];
my $which = which($e->[1]);
next unless $which;
log_trace "Opening file %s in spreadsheet program %s ...",
$path, $which;
return system($which, @{ $e->[2] }, $path);
}
log_trace "Falling back to using Desktop::Open ...";
require Desktop::Open;
return Desktop::Open::open_desktop($path);
}
1;
# ABSTRACT: Open spreadsheet in a spreadsheet program
__END__
=pod
=encoding UTF-8
=head1 NAME
Spreadsheet::Open - Open spreadsheet in a spreadsheet program
=head1 VERSION
This document describes version 0.002 of Spreadsheet::Open (from Perl distribution Spreadsheet-Open), released on 2023-11-09.
=head1 SYNOPSIS
use Spreadsheet::Open qw(open_spreadsheet);
my $ok = open_spreadsheet("/path/to/my.xlsx");
=head1 DESCRIPTION
=head1 FUNCTIONS
=head2 open_spreadsheet
Usage:
$status = open_spreadsheet($path);
Try a few programs to open a spreadsheet. Currently, in order, LibreOffice (in
decreasing order of version), then failing that, L<Desktop::Open>
C<$ok> is what returned by C<system()> or Desktop::Open.
=head1 HOMEPAGE
Please visit the project's homepage at L<https://metacpan.org/release/Spreadsheet-Open>.
=head1 SOURCE
Source repository is at L<https://github.com/perlancar/perl-Spreadsheet-Open>.
=head1 SEE ALSO
C<Browser::Open> to open a URL in a browser.
=head1 AUTHOR
perlancar <perlancar@cpan.org>
=head1 CONTRIBUTING
To contribute, you can send patches by email/via RT, or send pull requests on
( run in 1.815 second using v1.01-cache-2.11-cpan-39bf76dae61 )