The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Spreadsheet::Engine - Core calculation engine for a spreadsheet

SYNOPSIS

  use Spreadsheet::Engine;
  
  my $sheet = Spreadsheet::Engine->new;
  my $sheet = Spreadsheet::Engine->load_data([@data]);

  $sheet->execute('set A1 value n 2');
  $sheet->execute('set A2 value n 4');
  $sheet->execute('set A3 formula SUM(A1:A2)');
  $sheet->recalc;

  my $data = $sheet->raw;
  print $data->{datavalues}{A3}; # 6

DESCRIPTION

This provides back-end spreadsheet functionality for creating a sheet, setting cells to have value or formulae, and performing all necessary calculations. There is no front-end UI provided - this is purely the calculation engine.

Over 110 spreadsheet functions are provided: see Spreadsheet::Engine::Functions for the full list.

METHODS

new

  my $sheet = Spreadsheet::Engine->new;

Instantiate a new blank spreadsheet.

load_data

  my $sheet = Spreadsheet::Engine->load_data([@data]);

Instantiate a sheet from lines of data in the saved file format (see Spreadsheet::Engine::Sheet for doumentation>)

execute

  $sheet->execute('set A1 value n 2');
  $sheet->execute('set A2 value n 4');
  $sheet->execute('set A3 formula SUM(A1:A2)');

Execute the given command against the sheet. See Spreadsheet::Engine::Sheet for documentation of commands.

recalc

  $sheet->recalc;

Recalculate the values for all formulae in the sheet. This never happens automatically - it must be explicitly called.

raw

  my $data = $sheet->raw;
  print $data->{datavalues}{A3}; # 6

Access the raw datastructure for the sheet. This is a temporary method until we provide proper accessors to the underlying data.

WARNING

Although the core underlying code is relatively mature and featureful, there will be significant interface changes and refactoring going forward with this version. There are very few automated tests as yet, so this process is likely to introduce bugs. Please pay close attention to the CHANGES file if you upgrade this package.

HISTORY

The original Spreadsheet::Engine code was taken from SocialCalc version 1.1.0, which in turn originated as wikiCalc(R) version 1.0.

AUTHORS

wikiCalc was developed by Dan Bricklin, at Software Garden, Inc.

SocialCalc 1.1.0 was developed by Dan Bricklin, Casey West, and Tony Bowden, at Socialtext, Inc.

Spreadsheet::Engine is developed and maintained by Tony Bowden <tony@tmtm.com>

COPYRIGHT

Portions (c) Copyright 2005, 2006, 2007 Software Garden, Inc. All Rights Reserved.

Portions (c) Copyright 2007 Socialtext, Inc. All Rights Reserved.

Portions (c) Copyright 2007 Tony Bowden

LICENSE

The contents of this file are subject to the Artistic License 2.0; you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.perlfoundation.org/artistic_license_2_0