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 )