| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345 |
- # DISCLAIMER OF WARRANTY
- # Because this software is licensed free of charge, there is no warranty for the software,
- # to the extent permitted by applicable law. Except when otherwise stated in writing
- # the copyright holders and/or other parties provide the software "as is" without
- # warranty of any kind, either expressed or implied, including, but not limited to,
- # the implied warranties of merchantability and fitness for a particular purpose.
- # The entire risk as to the quality and performance of the software is with you.
- # Should the software prove defective, you assume the cost of all necessary
- # servicing, repair, or correction.
- # In no event unless required by applicable law or agreed to in writing will any
- # copyright holder, or any other party who may modify and/or redistribute the software
- # as permitted by the above licence, be liable to you for damages, including any general,
- # special, incidental, or consequential damages arising out of the use or inability
- # to use the software (including but not limited to loss of data or data being rendered
- # inaccurate or losses sustained by you or third parties or a failure of the software
- # to operate with any other software), even if such holder or other party
- # has been advised of the possibility of such damages.
- # AUTHOR
- # Current maintainer 0.40+: John McNamara jmcnamara@cpan.org
- # Maintainer 0.27-0.33: Gabor Szabo szabgab@cpan.org
- # Original author: Kawai Takanori (Hippo2000) kwitknr@cpan.org
- # COPYRIGHT
- # Copyright (c) 2009-2010 John McNamara
- # Copyright (c) 2006-2008 Gabor Szabo
- # Copyright (c) 2000-2006 Kawai Takanori
- # All rights reserved. This is free software. You may distribute under the terms of
- # the Artistic License(full text of the Artistic License http://dev.perl.org/licenses/artistic.html).
- package Spreadsheet::ParseExcel::Cell;
- ###############################################################################
- #
- # Spreadsheet::ParseExcel::Cell - A class for Cell data and formatting.
- #
- # Used in conjunction with Spreadsheet::ParseExcel.
- #
- # Copyright (c) 2009 John McNamara
- # Copyright (c) 2006-2008 Gabor Szabo
- # Copyright (c) 2000-2006 Kawai Takanori
- #
- # perltidy with standard settings.
- #
- # Documentation after __END__
- #
- use strict;
- use warnings;
- our $VERSION = '0.57';
- ###############################################################################
- #
- # new()
- #
- # Constructor.
- #
- sub new {
- my ( $package, %properties ) = @_;
- my $self = \%properties;
- bless $self, $package;
- }
- ###############################################################################
- #
- # value()
- #
- # Returns the formatted value of the cell.
- #
- sub value {
- my $self = shift;
- return $self->{_Value};
- }
- ###############################################################################
- #
- # unformatted()
- #
- # Returns the unformatted value of the cell.
- #
- sub unformatted {
- my $self = shift;
- return $self->{Val};
- }
- ###############################################################################
- #
- # get_format()
- #
- # Returns the Format object for the cell.
- #
- sub get_format {
- my $self = shift;
- return $self->{Format};
- }
- ###############################################################################
- #
- # type()
- #
- # Returns the type of cell such as Text, Numeric or Date.
- #
- sub type {
- my $self = shift;
- return $self->{Type};
- }
- ###############################################################################
- #
- # encoding()
- #
- # Returns the character encoding of the cell.
- #
- sub encoding {
- my $self = shift;
- if ( !defined $self->{Code} ) {
- return 1;
- }
- elsif ( $self->{Code} eq 'ucs2' ) {
- return 2;
- }
- elsif ( $self->{Code} eq '_native_' ) {
- return 3;
- }
- else {
- return 0;
- }
- return $self->{Code};
- }
- ###############################################################################
- #
- # is_merged()
- #
- # Returns true if the cell is merged.
- #
- sub is_merged {
- my $self = shift;
- return $self->{Merged};
- }
- ###############################################################################
- #
- # get_rich_text()
- #
- # Returns an array ref of font information about each string block in a "rich",
- # i.e. multi-format, string.
- #
- sub get_rich_text {
- my $self = shift;
- return $self->{Rich};
- }
- ###############################################################################
- #
- # Mapping between legacy method names and new names.
- #
- {
- no warnings; # Ignore warnings about variables used only once.
- *Value = *value;
- }
- 1;
- __END__
- =pod
- =head1 NAME
- Spreadsheet::ParseExcel::Cell - A class for Cell data and formatting.
- =head1 SYNOPSIS
- See the documentation for Spreadsheet::ParseExcel.
- =head1 DESCRIPTION
- This module is used in conjunction with Spreadsheet::ParseExcel. See the documentation for Spreadsheet::ParseExcel.
- =head1 Methods
- The following Cell methods are available:
- $cell->value()
- $cell->unformatted()
- $cell->get_format()
- $cell->type()
- $cell->encoding()
- $cell->is_merged()
- $cell->get_rich_text()
- =head2 value()
- The C<value()> method returns the formatted value of the cell.
- my $value = $cell->value();
- Formatted in this sense refers to the numeric format of the cell value. For example a number such as 40177 might be formatted as 40,117, 40117.000 or even as the date 2009/12/30.
- If the cell doesn't contain a numeric format then the formatted and unformatted cell values are the same, see the C<unformatted()> method below.
- For a defined C<$cell> the C<value()> method will always return a value.
- In the case of a cell with formatting but no numeric or string contents the method will return the empty string C<''>.
- =head2 unformatted()
- The C<unformatted()> method returns the unformatted value of the cell.
- my $unformatted = $cell->unformatted();
- Returns the cell value without a numeric format. See the C<value()> method above.
- =head2 get_format()
- The C<get_format()> method returns the L<Spreadsheet::ParseExcel::Format> object for the cell.
- my $format = $cell->get_format();
- If a user defined format hasn't been applied to the cell then the default cell format is returned.
- =head2 type()
- The C<type()> method returns the type of cell such as Text, Numeric or Date. If the type was detected as Numeric, and the Cell Format matches C<m{^[dmy][-\\/dmy]*$}i>, it will be treated as a Date type.
- my $type = $cell->type();
- See also L<Dates and Time in Excel>.
- =head2 encoding()
- The C<encoding()> method returns the character encoding of the cell.
- my $encoding = $cell->encoding();
- This method is only of interest to developers. In general Spreadsheet::ParseExcel will return all character strings in UTF-8 regardless of the encoding used by Excel.
- The C<encoding()> method returns one of the following values:
- =over
- =item * 0: Unknown format. This shouldn't happen. In the default case the format should be 1.
- =item * 1: 8bit ASCII or single byte UTF-16. This indicates that the characters are encoded in a single byte. In Excel 95 and earlier This usually meant ASCII or an international variant. In Excel 97 it refers to a compressed UTF-16 character string where all of the high order bytes are 0 and are omitted to save space.
- =item * 2: UTF-16BE.
- =item * 3: Native encoding. In Excel 95 and earlier this encoding was used to represent multi-byte character encodings such as SJIS.
- =back
- =head2 is_merged()
- The C<is_merged()> method returns true if the cell is merged.
- my $is_merged = $cell->is_merged();
- Returns C<undef> if the property isn't set.
- =head2 get_rich_text()
- The C<get_rich_text()> method returns an array ref of font information about each string block in a "rich", i.e. multi-format, string.
- my $rich_text = $cell->get_rich_text();
- The return value is an arrayref of arrayrefs in the form:
- [
- [ $start_position, $font_object ],
- ...,
- ]
- Returns undef if the property isn't set.
- =head1 Dates and Time in Excel
- Dates and times in Excel are represented by real numbers, for example "Jan 1 2001 12:30 PM" is represented by the number 36892.521.
- The integer part of the number stores the number of days since the epoch and the fractional part stores the percentage of the day.
- A date or time in Excel is just like any other number. The way in which it is displayed is controlled by the number format:
- Number format $cell->value() $cell->unformatted()
- ============= ============== ==============
- 'dd/mm/yy' '28/02/08' 39506.5
- 'mm/dd/yy' '02/28/08' 39506.5
- 'd-m-yyyy' '28-2-2008' 39506.5
- 'dd/mm/yy hh:mm' '28/02/08 12:00' 39506.5
- 'd mmm yyyy' '28 Feb 2008' 39506.5
- 'mmm d yyyy hh:mm AM/PM' 'Feb 28 2008 12:00 PM' 39506.5
- The L<Spreadsheet::ParseExcel::Utility> module contains a function called C<ExcelLocaltime> which will convert between an unformatted Excel date/time number and a C<localtime()> like array.
- For date conversions using the CPAN C<DateTime> framework see L<DateTime::Format::Excel> http://search.cpan.org/search?dist=DateTime-Format-Excel
- =head1 AUTHOR
- Maintainer 0.40+: John McNamara jmcnamara@cpan.org
- Maintainer 0.27-0.33: Gabor Szabo szabgab@cpan.org
- Original author: Kawai Takanori kwitknr@cpan.org
- =head1 COPYRIGHT
- Copyright (c) 2009-2010 John McNamara
- Copyright (c) 2006-2008 Gabor Szabo
- Copyright (c) 2000-2006 Kawai Takanori
- All rights reserved.
- You may distribute under the terms of either the GNU General Public License or the Artistic License, as specified in the Perl README file.
- =cut
|