Spreadsheet::WriteExcel::Utility man page on Fedora

Man page or keyword search:  
man Server   31170 pages
apropos Keyword Search (all sections)
Output format
Fedora logo
[printable version]

Spreadsheet::WriteExceUsertContributed PerlSpreadsheet::WriteExcel::Utility(3)

NAME
       Utility - Helper functions for Spreadsheet::WriteExcel.

SYNOPSIS
       Functions to help with some common tasks when using
       Spreadsheet::WriteExcel.

       These functions mainly relate to dealing with rows and columns in A1
       notation and to handling dates and times.

	   use Spreadsheet::WriteExcel::Utility;	       # Import everything

	   ($row, $col)	   = xl_cell_to_rowcol('C2');	       # (1, 2)
	   $str		   = xl_rowcol_to_cell(1, 2);	       # C2
	   $str		   = xl_inc_col('Z1'  );	       # AA1
	   $str		   = xl_dec_col('AA1' );	       # Z1

	   $date	   = xl_date_list(2002, 1, 1);	       # 37257
	   $date	   = xl_parse_date("11 July 1997");    # 35622
	   $time	   = xl_parse_time('3:21:36 PM');      # 0.64
	   $date	   = xl_decode_date_EU("13 May 2002"); # 37389

DESCRIPTION
       This module provides a set of functions to help with some common tasks
       encountered when using the Spreadsheet::WriteExcel module. The two main
       categories of function are:

       Row and column functions: these are used to deal with Excel's A1
       representation of cells. The functions in this category are:

	   xl_rowcol_to_cell
	   xl_cell_to_rowcol
	   xl_range_formula
	   xl_inc_row
	   xl_dec_row
	   xl_inc_col
	   xl_dec_col

       Date and Time functions: these are used to convert dates and times to
       the numeric format used by Excel. The functions in this category are:

	   xl_date_list
	   xl_date_1904
	   xl_parse_time
	   xl_parse_date
	   xl_parse_date_init
	   xl_decode_date_EU
	   xl_decode_date_US

       All of these functions are exported by default. However, you can use
       import lists if you wish to limit the functions that are imported:

	   use Spreadsheet::WriteExcel::Utility;		  # Import everything
	   use Spreadsheet::WriteExcel::Utility qw(xl_date_list); # xl_date_list only
	   use Spreadsheet::WriteExcel::Utility qw(:rowcol);	  # Row/col functions
	   use Spreadsheet::WriteExcel::Utility qw(:dates);	  # Date functions

ROW AND COLUMN FUNCTIONS
       Spreadsheet::WriteExcel supports two forms of notation to designate the
       position of cells: Row-column notation and A1 notation.

       Row-column notation uses a zero based index for both row and column
       while A1 notation uses the standard Excel alphanumeric sequence of
       column letter and 1-based row. Columns range from A to IV i.e. 0 to
       255, rows range from 1 to 16384 in Excel 5 and 65536 in Excel 97. For
       example:

	   (0, 0)      # The top left cell in row-column notation.
	   ('A1')      # The top left cell in A1 notation.

	   (1999, 29)  # Row-column notation.
	   ('AD2000')  # The same cell in A1 notation.

       Row-column notation is useful if you are referring to cells
       programmatically:

	   for my $i (0 .. 9) {
	       $worksheet->write($i, 0, 'Hello'); # Cells A1 to A10
	   }

       A1 notation is useful for setting up a worksheet manually and for
       working with formulas:

	   $worksheet->write('H1', 200);
	   $worksheet->write('H2', '=H7+1');

       The functions in the following sections can be used for dealing with A1
       notation, for example:

	   ($row, $col)	   = xl_cell_to_rowcol('C2');  # (1, 2)
	   $str		   = xl_rowcol_to_cell(1, 2);  # C2

       Cell references in Excel can be either relative or absolute. Absolute
       references are prefixed by the dollar symbol as shown below:

	   A1	   # Column and row are relative
	   $A1	   # Column is absolute and row is relative
	   A$1	   # Column is relative and row is absolute
	   $A$1	   # Column and row are absolute

       An absolute reference only has an effect if the cell is copied. Refer
       to the Excel documentation for further details. All of the following
       functions support absolute references.

   xl_rowcol_to_cell($row, $col, $row_absolute, $col_absolute)
	   Parameters: $row:	       Integer
		       $col:	       Integer
		       $row_absolute:  Boolean (1/0) [optional, default is 0]
		       $col_absolute:  Boolean (1/0) [optional, default is 0]

	   Returns:    A string in A1 cell notation

       This function converts a zero based row and column cell reference to a
       A1 style string:

	   $str = xl_rowcol_to_cell(0, 0); # A1
	   $str = xl_rowcol_to_cell(0, 1); # B1
	   $str = xl_rowcol_to_cell(1, 0); # A2

       The optional parameters $row_absolute and $col_absolute can be used to
       indicate if the row or column is absolute:

	   $str = xl_rowcol_to_cell(0, 0, 0, 1); # $A1
	   $str = xl_rowcol_to_cell(0, 0, 1, 0); # A$1
	   $str = xl_rowcol_to_cell(0, 0, 1, 1); # $A$1

       See "ROW AND COLUMN FUNCTIONS" for an explanation of absolute cell
       references.

   xl_cell_to_rowcol($string)
	   Parameters: $string	       String in A1 format

	   Returns:    List	       ($row, $col)

       This function converts an Excel cell reference in A1 notation to a zero
       based row and column. The function will also handle Excel's absolute,
       "$", cell notation.

	   my ($row, $col) = xl_cell_to_rowcol('A1');	  # (0, 0)
	   my ($row, $col) = xl_cell_to_rowcol('B1');	  # (0, 1)
	   my ($row, $col) = xl_cell_to_rowcol('C2');	  # (1, 2)
	   my ($row, $col) = xl_cell_to_rowcol('$C2' );	  # (1, 2)
	   my ($row, $col) = xl_cell_to_rowcol('C$2' );	  # (1, 2)
	   my ($row, $col) = xl_cell_to_rowcol('$C$2');	  # (1, 2)

   xl_range_formula($sheetname, $row_1, $row_2, $col_1, $col_2)
	   Parameters: $sheetname      String
		       $row_1:	       Integer
		       $row_2:	       Integer
		       $col_1:	       Integer
		       $col_2:	       Integer

	   Returns:    A worksheet range formula as a string.

       This function converts zero based row and column cell references to an
       A1 style formula string:

	   my $str = xl_range_formula('Sheet1',	  0,  9, 0, 0); # =Sheet1!$A$1:$A$10
	   my $str = xl_range_formula('Sheet2',	  6, 65, 1, 1); # =Sheet2!$B$7:$B$66
	   my $str = xl_range_formula('New data', 1,  8, 2, 2); # ='New data'!$C$2:$C$9

       This is useful for setting ranges in Chart objects:

	   $chart->add_series(
	       categories    => xl_range_formula('Sheet1', 1, 9, 0, 0),
	       values	     => xl_range_formula('Sheet1', 1, 9, 1, 1);,
	   );

	   # Which is the same as:

	   $chart->add_series(
	       categories    => '=Sheet1!$A$2:$A$10',
	       values	     => '=Sheet1!$B$2:$B$10',
	   );

   xl_inc_row($string)
	   Parameters: $string, a string in A1 format

	   Returns:    Incremented string in A1 format

       This functions takes a cell reference string in A1 notation and
       increments the row. The function will also handle Excel's absolute,
       "$", cell notation:

	   my $str = xl_inc_row('A1'  ); # A2
	   my $str = xl_inc_row('B$2' ); # B$3
	   my $str = xl_inc_row('$C3' ); # $C4
	   my $str = xl_inc_row('$D$4'); # $D$5

   xl_dec_row($string)
	   Parameters: $string, a string in A1 format

	   Returns:    Decremented string in A1 format

       This functions takes a cell reference string in A1 notation and
       decrements the row. The function will also handle Excel's absolute,
       "$", cell notation:

	   my $str = xl_dec_row('A2'  ); # A1
	   my $str = xl_dec_row('B$3' ); # B$2
	   my $str = xl_dec_row('$C4' ); # $C3
	   my $str = xl_dec_row('$D$5'); # $D$4

   xl_inc_col($string)
	   Parameters: $string, a string in A1 format

	   Returns:    Incremented string in A1 format

       This functions takes a cell reference string in A1 notation and
       increments the column. The function will also handle Excel's absolute,
       "$", cell notation:

	   my $str = xl_inc_col('A1'  ); # B1
	   my $str = xl_inc_col('Z1'  ); # AA1
	   my $str = xl_inc_col('$B1' ); # $C1
	   my $str = xl_inc_col('$D$5'); # $E$5

   xl_dec_col($string)
	   Parameters: $string, a string in A1 format

	   Returns:    Decremented string in A1 format

       This functions takes a cell reference string in A1 notation and
       decrements the column. The function will also handle Excel's absolute,
       "$", cell notation:

	   my $str = xl_dec_col('B1'  ); # A1
	   my $str = xl_dec_col('AA1' ); # Z1
	   my $str = xl_dec_col('$C1' ); # $B1
	   my $str = xl_dec_col('$E$5'); # $D$5

TIME AND DATE FUNCTIONS
       Dates and times in Excel are represented by real numbers, for example
       "Jan 1 2001 12:30 AM" 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 in
       seconds.

       The epoch can be either 1900 or 1904. Excel for Windows uses 1900 and
       Excel for Macintosh uses 1904. The epochs are:

	   1900: 0 January 1900 i.e. 31 December 1899
	   1904: 1 January 1904

       Excel on Windows and the Macintosh will convert automatically between
       one system and the other. By default Spreadsheet::WriteExcel uses the
       1900 format. To use the 1904 epoch you must use the "set_1904()"
       workbook method, see the Spreadsheet::WriteExcel documentation.

       There are two things to note about the 1900 date format. The first is
       that the epoch starts on 0 January 1900. The second is that the year
       1900 is erroneously but deliberately treated as a leap year. Therefore
       you must add an extra day to dates after 28 February 1900. The
       functions in the following section will deal with these issues
       automatically. The reason for this anomaly is explained at
       http://support.microsoft.com/support/kb/articles/Q181/3/70.asp

       Note, a date or time in Excel is like any other number. To display the
       number as a date you must apply a number format to it: Refer to the
       "set_num_format()" method in the Spreadsheet::WriteExcel documentation:

	   $date = xl_date_list(2001, 1, 1, 12, 30);
	   $format->set_num_format('mmm d yyyy hh:mm AM/PM');
	   $worksheet->write('A1', $date , $format); # Jan 1 2001 12:30 AM

       To use these functions you must install the "Date::Manip" and
       "Date::Calc" modules. See REQUIREMENTS and the individual requirements
       of each functions.

       See also the DateTime::Format::Excel
       module,http://search.cpan.org/search?dist=DateTime-Format-Excel which
       is part of the DateTime project and which deals specifically with
       converting dates and times to and from Excel's format.

   xl_date_list($years, $months, $days, $hours, $minutes, $seconds)
	   Parameters: $years:	       Integer
		       $months:	       Integer [optional, default is 1]
		       $days:	       Integer [optional, default is 1]
		       $hours:	       Integer [optional, default is 0]
		       $minutes:       Integer [optional, default is 0]
		       $seconds:       Float   [optional, default is 0]

	   Returns:    A number that represents an Excel date
		       or undef for an invalid date.

	   Requires:   Date::Calc

       This function converts an array of data into a number that represents
       an Excel date. All of the parameters are optional except for $years.

	   $date1 = xl_date_list(2002, 1, 2);		   # 2 Jan 2002
	   $date2 = xl_date_list(2002, 1, 2, 12);	   # 2 Jan 2002 12:00 pm
	   $date3 = xl_date_list(2002, 1, 2, 12, 30);	   # 2 Jan 2002 12:30 pm
	   $date4 = xl_date_list(2002, 1, 2, 12, 30, 45);  # 2 Jan 2002 12:30:45 pm

       This function can be used in conjunction with functions that parse date
       and time strings. In fact it is used in most of the following
       functions.

   xl_parse_time($string)
	   Parameters: $string, a textual representation of a time

	   Returns:    A number that represents an Excel time
		       or undef for an invalid time.

       This function converts a time string into a number that represents an
       Excel time. The following time formats are valid:

	   hh:mm       [AM|PM]
	   hh:mm       [AM|PM]
	   hh:mm:ss    [AM|PM]
	   hh:mm:ss.ss [AM|PM]

       The meridian, AM or PM, is optional and case insensitive. A 24 hour
       time is assumed if the meridian is omitted

	   $time1 = xl_parse_time('12:18');
	   $time2 = xl_parse_time('12:18:14');
	   $time3 = xl_parse_time('12:18:14 AM');
	   $time4 = xl_parse_time('1:18:14 AM');

       Time in Excel is expressed as a fraction of the day in seconds.
       Therefore you can calculate an Excel time as follows:

	   $time = ($hours*3600 +$minutes*60 +$seconds)/(24*60*60);

   xl_parse_date($string)
	   Parameters: $string, a textual representation of a date and time

	   Returns:    A number that represents an Excel date
		       or undef for an invalid date.

	   Requires:   Date::Manip and Date::Calc

       This function converts a date and time string into a number that
       represents an Excel date.

       The parsing is performed using the "ParseDate()" function of the
       Date::Manip module. Refer to the Date::Manip documentation for further
       information about the date and time formats that can be parsed. In
       order to use this function you will probably have to initialise some
       Date::Manip variables via the "xl_parse_date_init()" function, see
       below.

	   xl_parse_date_init("TZ=GMT","DateFormat=non-US");

	   $date1 = xl_parse_date("11/7/97");
	   $date2 = xl_parse_date("Friday 11 July 1997");
	   $date3 = xl_parse_date("10:30 AM Friday 11 July 1997");
	   $date4 = xl_parse_date("Today");
	   $date5 = xl_parse_date("Yesterday");

       Note, if you parse a string that represents a time but not a date this
       function will add the current date. If you want the time without the
       date you can do something like the following:

	   $time  = xl_parse_date("10:30 AM");
	   $time -= int($time);

   xl_parse_date_init("variable=value", ...)
	   Parameters: A list of Date::Manip variable strings

	   Returns:    A list of all the Date::Manip strings

	   Requires:   Date::Manip

       This function is used to initialise variables required by the
       Date::Manip module. You should call this function before calling
       "xl_parse_date()". It need only be called once.

       This function is a thin wrapper for the "Date::Manip::Date_Init()"
       function. You can use "Date_Init()"  directly if you wish. Refer to the
       Date::Manip documentation for further information.

	   xl_parse_date_init("TZ=MST","DateFormat=US");
	   $date1 = xl_parse_date("11/7/97");  # November 7th 1997

	   xl_parse_date_init("TZ=GMT","DateFormat=non-US");
	   $date1 = xl_parse_date("11/7/97");  # July 11th 1997

   xl_decode_date_EU($string)
	   Parameters: $string, a textual representation of a date and time

	   Returns:    A number that represents an Excel date
		       or undef for an invalid date.

	   Requires:   Date::Calc

       This function converts a date and time string into a number that
       represents an Excel date.

       The date parsing is performed using the "Decode_Date_EU()" function of
       the Date::Calc module. Refer to the Date::Calc for further information
       about the date formats that can be parsed. Also note the following from
       the Date::Calc documentation:

       "If the year is given as one or two digits only (i.e., if the year is
       less than 100), it is mapped to the window 1970 -2069 as follows":

	    0 E<lt>= $year E<lt>  70  ==>  $year += 2000;
	   70 E<lt>= $year E<lt> 100  ==>  $year += 1900;

       The time portion of the string is parsed using the "xl_parse_time()"
       function described above.

       Note: the EU in the function name means that a European date format is
       assumed if it is not clear from the string. See the first example
       below.

	   $date1 = xl_decode_date_EU("11/7/97"); #11 July 1997
	   $date2 = xl_decode_date_EU("Sat 12 Sept 1998");
	   $date3 = xl_decode_date_EU("4:30 AM Sat 12 Sept 1998");

   xl_decode_date_US($string)
	   Parameters: $string, a textual representation of a date and time

	   Returns:    A number that represents an Excel date
		       or undef for an invalid date.

	   Requires:   Date::Calc

       This function converts a date and time string into a number that
       represents an Excel date.

       The date parsing is performed using the "Decode_Date_US()" function of
       the Date::Calc module. Refer to the Date::Calc for further information
       about the date formats that can be parsed. Also note the following from
       the Date::Calc documentation:

       "If the year is given as one or two digits only (i.e., if the year is
       less than 100), it is mapped to the window 1970 -2069 as follows":

	    0 <= $year <  70  ==>  $year += 2000;
	   70 <= $year < 100  ==>  $year += 1900;

       The time portion of the string is parsed using the "xl_parse_time()"
       function described above.

       Note: the US in the function name means that an American date format is
       assumed if it is not clear from the string. See the first example
       below.

	   $date1 = xl_decode_date_US("11/7/97"); # 7 November 1997
	   $date2 = xl_decode_date_US("12 Sept Saturday 1998");
	   $date3 = xl_decode_date_US("4:30 AM 12 Sept Sat 1998");

   xl_date_1904($date)
	   Parameters: $date, an Excel date with a 1900 epoch

	   Returns:    an Excel date with a 1904 epoch or zero if
		       the $date is before 1904

       This function converts an Excel date based on the 1900 epoch into a
       date based on the 1904 epoch.

	   $date1 = xl_date_list(2002, 1, 13); # 13 Jan 2002, 1900 epoch
	   $date2 = xl_date_1904($date1);      # 13 Jan 2002, 1904 epoch

       See also the "set_1904()" workbook method in the
       Spreadsheet::WriteExcel documentation.

REQUIREMENTS
       The date and time functions require functions from the "Date::Manip"
       and "Date::Calc" modules. The required functions are "autoused" from
       these modules so that you do not have to install them unless you wish
       to use the date and time routines. Therefore it is possible to use the
       row and column functions without having "Date::Manip" and "Date::Calc"
       installed.

       For more information about "autousing" refer to the documentation on
       the "autouse" pragma.

BUGS
       When using the autoused functions from "Date::Manip" and "Date::Calc"
       on Perl 5.6.0 with "-w" you will get a warning like this:

	   "Subroutine xxx redefined ..."

       The current workaround for this is to put "use warnings;" near the
       beginning of your program.

AUTHOR
       John McNamara jmcnamara@cpan.org

COPYRIGHT
       X MM-MMX, John McNamara.

       All Rights Reserved. This module is free software. It may be used,
       redistributed and/or modified under the same terms as Perl itself.

perl v5.14.2			  2010-02-0Spreadsheet::WriteExcel::Utility(3)
[top]

List of man pages available for Fedora

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net