r951 - in packages/libspreadsheet-writeexcel-perl/branches/upstream/current: . charts doc examples lib/Spreadsheet lib/Spreadsheet/WriteExcel t

Gunnar Wolf gwolf at costa.debian.org
Sun Jul 17 08:09:12 UTC 2005


Author: gwolf
Date: 2005-04-23 00:22:10 +0000 (Sat, 23 Apr 2005)
New Revision: 951

Added:
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/hide_sheet.pl
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/01_merge_formats.t
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/11_date_time.t
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/12_date_only.t
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/13_date_seconds.t
Removed:
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/exe/
Modified:
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Changes
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/MANIFEST
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/META.yml
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Makefile.PL
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/README
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/chartex.pl
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/doc/WriteExcel.html
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/README
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel.pm
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Chart.pm
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Format.pm
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Workbook.pm
   packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Worksheet.pm
Log:
Load /tmp/tmp.ep9AoA/libspreadsheet-writeexcel-perl-2.13 into
packages/libspreadsheet-writeexcel-perl/branches/upstream/current.


Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Changes
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Changes	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Changes	2005-04-23 00:22:10 UTC (rev 951)
@@ -1,5 +1,17 @@
 Revision history for Perl module Spreadsheet::WriteExcel.
 
+2.13 April 20 2005 - Minor
+
+    ! Made it a fatal error to use a merged format in a non-
+      merged cell (and vice-versa). This is a temporary measure
+      to prevent people from shooting themselves in the foot
+      until the Format.pm code can be refactored.
+
+    + Add 01_merge_formats.t test for above.
+
+    + Added date_time tests.
+
+
 2.12 March 22 2005 - Minor
 
     + Added further Unicode support. The following methods now

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/MANIFEST
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/MANIFEST	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/MANIFEST	2005-04-23 00:22:10 UTC (rev 951)
@@ -20,6 +20,10 @@
 
 t/00_IEEE_double.t
 t/01_add_worksheet.t
+t/01_merge_formats.t
+t/11_date_time.t
+t/12_date_only.t
+t/13_date_seconds.t
 
 doc/index.html
 doc/WriteExcel.html
@@ -63,6 +67,7 @@
 examples/formats.pl
 examples/function_locale.pl
 examples/headers.pl
+examples/hide_sheet.pl
 examples/hyperlink1.pl
 examples/hyperlink2.pl
 examples/images.pl
@@ -131,4 +136,4 @@
 charts/Chart2.xls
 charts/Chart3.xls
 
-exe/chartex
+bin/chartex

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/META.yml
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/META.yml	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/META.yml	2005-04-23 00:22:10 UTC (rev 951)
@@ -1,10 +1,10 @@
-name:               Spreadsheet-WriteExcel
-version:            2.12
-version_from:       lib/Spreadsheet/WriteExcel.pm
-installdirs:        site
+name:         Spreadsheet-WriteExcel
+version:      2.13
+version_from: lib/Spreadsheet/WriteExcel.pm
+installdirs:  site
 requires:
     File::Temp:                    0
     Parse::RecDescent:             0
 
-distribution_type:  module
-generated_by:       hand
+distribution_type: module
+generated_by: hand

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Makefile.PL
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Makefile.PL	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/Makefile.PL	2005-04-23 00:22:10 UTC (rev 951)
@@ -13,5 +13,5 @@
     'NEEDS_LINKING' => 0,
     'PREREQ_PM'     => {Parse::RecDescent => 0, File::Temp => 0},
     'dist'          => {COMPRESS => 'gzip -best', SUFFIX => 'gz'},
-    'EXE_FILES'     => ['exe/chartex'],
+    'EXE_FILES'     => ['bin/chartex'],
 );

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/README
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/README	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/README	2005-04-23 00:22:10 UTC (rev 951)
@@ -18,8 +18,8 @@
     Chart3.xls      A template for use with demo3.pl.
 
     * If you performed a normal installation then the chartex utility
-      should be installed to your C<perl/bin> directory and should be
-      available from the command line.
+      should be installed to your 'somepath/perl/bin' directory and
+      should be available from the command line.
 
 
 You can run the examples as follows:

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/chartex.pl
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/chartex.pl	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/charts/chartex.pl	2005-04-23 00:22:10 UTC (rev 951)
@@ -148,7 +148,7 @@
 
     $range = "'$range'" if $range =~ /[^\w:]/;
 
-    print "    \$worksheet->store_formula(\"=$range!A1\");\n";
+    print "    \$worksheet->store_formula('=$range!A1');\n";
 }
 
 

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/doc/WriteExcel.html
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/doc/WriteExcel.html	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/doc/WriteExcel.html	2005-04-23 00:22:10 UTC (rev 951)
@@ -215,8 +215,8 @@
 <HR>
 <H1><A NAME="VERSION">VERSION</A></H1>
 <P>
-This document refers to version 2.12 of Spreadsheet::WriteExcel, released
-March 22, 2005.
+This document refers to version 2.13 of Spreadsheet::WriteExcel, released
+April 20, 2005.
 
 </P>
 <P>
@@ -1118,7 +1118,7 @@
 </PRE>
 </P>
 <P>
-The &quot;looks like&quot; rule is defined by regular expressions:
+The "looks like" rule is defined by regular expressions:
 
 </P>
 <P>
@@ -3153,7 +3153,9 @@
 </P>
 <P>
 <STRONG>WARNING</STRONG>. The format object that is used with a <CODE>merge_range()</CODE> method call is marked internally as being associated with a merged range.
-As such, <STRONG>it should not be used for other formatting</STRONG>. This will be fixed in a later version. See the <A HREF="#BUGS">BUGS</A> section.
+It is a fatal error to use a merged format in a non-merged cell. Instead
+you should use separate formats for merged and non-merged cells. This
+restriction will be removed in a future release.
 
 </P>
 <P>
@@ -6290,6 +6292,7 @@
     outline.pl              An example of outlines and grouping.
     panes.pl                An examples of how to create panes.
     protection.pl           Example of cell locking and formula hiding.
+    hide_sheet.pl           Simple example of hiding a worksheet.
     repeat.pl               Example of writing repeated formulas.
     sales.pl                An example of a simple sales spreadsheet.
     sendmail.pl             Send an Excel email attachment using Mail::Sender.
@@ -6854,10 +6857,10 @@
 
 </P>
 <P>
-The format object that is used with a <CODE>merge_range()</CODE> method call is marked internally as being associated with a merged range.If
-you use this format in a non-merged cell it will cause Excel to crash. The
-current workaround is to use separate formats for merged and non-merged
-cell. This will be fixed in a future release.
+The format object that is used with a <CODE>merge_range()</CODE> method call is marked internally as being associated with a merged range.It
+is a fatal error to use a merged format in a non-merged cell. The current
+workaround is to use separate formats for merged and non-merged cell. This
+restriction will be removed in a future release.
 
 </P>
 <P>
@@ -6910,7 +6913,7 @@
 <UL>
 <LI><A NAME="item_Macros">Macros.</A>
 <P>
-This would solve the previous problem neatly. However, the format of Excel
+This would solve some other problems neatly. However, the format of Excel
 macros isn't documented.
 
 </P>
@@ -6958,12 +6961,6 @@
   </td></tr>
 </table>
 
-
-
-
-
-
-</P>
 <P>
 Alternatively you can keep up to date with future releases by subscribing
 at: <A
@@ -7047,14 +7044,14 @@
 <P>
 Alexander Farber, Andre de Bruin, Arthur at ais, Artur Silveira da Cunha,
 Borgar Olsen, Brian White, Bob Mackay, Cedric Bouvier, Chad Johnson, CPAN
-testers, Daniel Berger, Daniel Gardner, Dmitry Kochurov, Eric Frazier,
-Ernesto Baschny, Felipe Pérez Galiana, Gordon Simpson, Hanc Pavel, Harold
-Bamford, James Holmes, James Wilkinson, Johan Ekenberg, Johann Hanne,
-Jonathan Scott Duff, J.C. Wren, Kenneth Stacey, Keith Miller, Kyle Krom,
-Marc Rosenthal, Markus Schmitz, Michael Braig, Michael Buschauer, Mike
-Blazer, Michael Erickson, Michael W J West, Ning Xie, Paul J. Falbe, Paul
-Medynski, Peter Dintelmann, Pierre Laplante, Praveen Kotha, Reto
-Badertscher, Rich Sorden, Shane Ashby, Shenyu Zheng, Stephan Loescher,
+testers, Damyan Ivanov, Daniel Berger, Daniel Gardner, Dmitry Kochurov,
+Eric Frazier, Ernesto Baschny, Felipe Pérez Galiana, Gordon Simpson, Hanc
+Pavel, Harold Bamford, James Holmes, James Wilkinson, Johan Ekenberg,
+Johann Hanne, Jonathan Scott Duff, J.C. Wren, Kenneth Stacey, Keith Miller,
+Kyle Krom, Marc Rosenthal, Markus Schmitz, Michael Braig, Michael
+Buschauer, Mike Blazer, Michael Erickson, Michael W J West, Ning Xie, Paul
+J. Falbe, Paul Medynski, Peter Dintelmann, Pierre Laplante, Praveen Kotha,
+Reto Badertscher, Rich Sorden, Shane Ashby, Shenyu Zheng, Stephan Loescher,
 Steve Sapovits, Sven Passig, Svetoslav Marinov, Tamas Gulacsi, Troy
 Daniels, Vahe Sarkissian.
 
@@ -7081,7 +7078,7 @@
 
 </P>
 <P>
-Dirk Eddelbuettel maintains the Debian distro.
+Gunnar Wolf maintains the Debian distro.
 
 </P>
 <P>
@@ -7105,20 +7102,34 @@
 </P>
 <P>
 <PRE>
-    Slow dulcimer, gavotte and bow, in autumn,
-    Basho and his friends go out to view the moon;
-    In summer, gasoline rainbow in the gutter,
+    Imagine a court of one: the queen a young mother,
+    Unhappy, alone all day with her firstborn child
+    And her new baby in a squalid apartment
 </PRE>
 </P>
 <P>
 <PRE>
-    The secret courtesy that courses like ichor
-    Through the old form of the rude, full-scale joke,
-    Impossible to tell in writing.
+    Of too few rooms, a different race from her neighbors.
+    She tells the child she's going to kill herself.
+    She broods, she rages. Hoping to distract her,
 </PRE>
 </P>
 <P>
 <PRE>
+    The child cuts capers, he sings, he does imitations
+    Of different people in the building, he jokes,
+    He feels if he keeps her alive until the father
+</PRE>
+</P>
+<P>
+<PRE>
+    Gets home from work, they'll be okay till morning.
+    It's laughter versus the bedroom and the pills.
+    What is he in his efforts but a courtier?
+</PRE>
+</P>
+<P>
+<PRE>
         -- Robert Pinsky
 </PRE>
 </P>

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/README
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/README	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/README	2005-04-23 00:22:10 UTC (rev 951)
@@ -37,6 +37,7 @@
 outline.pl              An example of outlines and grouping.
 panes.pl                An examples of how to create panes.
 protection.pl           Example of cell locking and formula hiding.
+hide_sheet.pl           Simple example of hiding a worksheet.
 repeat.pl               Example of writing repeated formulas.
 sales.pl                An example of a simple sales spreadsheet.
 sendmail.pl             Send an Excel email attachment using Mail::Sender.

Added: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/hide_sheet.pl
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/hide_sheet.pl	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/examples/hide_sheet.pl	2005-04-23 00:22:10 UTC (rev 951)
@@ -0,0 +1,26 @@
+#!/usr/bin/perl -w
+
+#######################################################################
+#
+# Example of how to hide a worksheet with Spreadsheet::WriteExcel.
+#
+# reverse('©'), April 2005, John McNamara, jmcnamara at cpan.org
+#
+
+use strict;
+use Spreadsheet::WriteExcel;
+
+my $workbook   = Spreadsheet::WriteExcel->new('hidden.xls');
+my $worksheet1 = $workbook->add_worksheet();
+my $worksheet2 = $workbook->add_worksheet();
+my $worksheet3 = $workbook->add_worksheet();
+
+# Sheet2 won't be visible until it is unhidden in Excel.
+$worksheet2->hide();
+
+$worksheet1->write(0, 0, "Hello");
+$worksheet2->write(0, 0, "Hello");
+$worksheet3->write(0, 0, "Hello");
+
+
+__END__

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Chart.pm
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Chart.pm	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Chart.pm	2005-04-23 00:22:10 UTC (rev 951)
@@ -2,7 +2,7 @@
 
 ###############################################################################
 #
-# Worksheet - A writer class for Excel Charts.
+# Chart - A writer class for Excel Charts.
 #
 #
 # Used in conjunction with Spreadsheet::WriteExcel
@@ -24,7 +24,7 @@
 use vars qw($VERSION @ISA);
 @ISA = qw(Spreadsheet::WriteExcel::BIFFwriter);
 
-$VERSION = '2.10';
+$VERSION = '2.13';
 
 ###############################################################################
 #
@@ -64,6 +64,7 @@
     $self->{_active_pane}       = 3;
     $self->{_frozen}            = 0;
     $self->{_selected}          = 0;
+    $self->{_hidden}            = 0;
 
     $self->{_paper_size}        = 0x0;
     $self->{_orientation}       = 0x1;
@@ -201,7 +202,8 @@
 
     my $self = shift;
 
-    $self->{_selected} = 1;
+    $self->{_hidden}         = 0; # Selected worksheet can't be hidden.
+    $self->{_selected}       = 1;
 }
 
 
@@ -216,13 +218,33 @@
 
     my $self = shift;
 
-    $self->{_selected} = 1;
+    $self->{_hidden}         = 0; # Active worksheet can't be hidden.
+    $self->{_selected}       = 1;
     ${$self->{_activesheet}} = $self->{_index};
 }
 
 
 ###############################################################################
 #
+# hide()
+#
+# Hide this worksheet.
+#
+sub hide {
+
+    my $self = shift;
+
+    $self->{_hidden}         = 1;
+
+    # A hidden worksheet shouldn't be active or selected.
+    $self->{_selected}       = 0;
+    ${$self->{_activesheet}} = 0;
+    ${$self->{_firstsheet}}  = 0;
+}
+
+
+###############################################################################
+#
 # set_first_sheet()
 #
 # Set this worksheet as the first visible sheet. This is necessary
@@ -233,7 +255,8 @@
 
     my $self = shift;
 
-    ${$self->{_firstsheet}} = $self->{_index};
+    $self->{_hidden}         = 0; # Active worksheet can't be hidden.
+    ${$self->{_firstsheet}}  = $self->{_index};
 }
 
 
@@ -247,7 +270,7 @@
 
 =head1 NAME
 
-Worksheet - A writer class for Excel Charts.
+Chart - A writer class for Excel Charts.
 
 =head1 SYNOPSIS
 

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Format.pm
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Format.pm	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Format.pm	2005-04-23 00:22:10 UTC (rev 951)
@@ -90,6 +90,9 @@
                     _diag_color     => 0x40,
                     _diag_border    => 0,
 
+                    # Temp code to prevent merged formats in non-merged cells.
+                    _used_merge     => 0,
+
                  };
 
     bless  $self, $class;

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Workbook.pm
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Workbook.pm	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Workbook.pm	2005-04-23 00:22:10 UTC (rev 951)
@@ -24,7 +24,7 @@
 use vars qw($VERSION @ISA);
 @ISA = qw(Spreadsheet::WriteExcel::BIFFwriter Exporter);
 
-$VERSION = '2.10';
+$VERSION = '2.13';
 
 ###############################################################################
 #
@@ -769,6 +769,7 @@
     # Ensure that at least one worksheet has been selected.
     if ($self->{_activesheet} == 0) {
         @{$self->{_worksheets}}[0]->{_selected} = 1;
+        @{$self->{_worksheets}}[0]->{_hidden}   = 0;
     }
 
     # Calculate the number of selected worksheet tabs and call the finalization
@@ -797,6 +798,7 @@
         $self->_store_boundsheet($sheet->{_name},
                                  $sheet->{_offset},
                                  $sheet->{_type},
+                                 $sheet->{_hidden},
                                  $sheet->{_encoding});
     }
 
@@ -1192,10 +1194,13 @@
 
     my $sheetname = $_[0];                # Worksheet name
     my $offset    = $_[1];                # Location of worksheet BOF
-    my $grbit     = $_[2];                # Sheet identifier
-    my $encoding  = $_[3];                # Sheet name encoding
+    my $type      = $_[2];                # Worksheet type
+    my $hidden    = $_[3];                # Worksheet hidden flag
+    my $encoding  = $_[4];                # Sheet name encoding
     my $cch       = length($sheetname);   # Length of sheet name
 
+    my $grbit     = $type | $hidden;
+
     # Character length is num of chars not num of bytes
     $cch /= 2 if $encoding;
 

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Worksheet.pm
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Worksheet.pm	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel/Worksheet.pm	2005-04-23 00:22:10 UTC (rev 951)
@@ -24,7 +24,7 @@
 use vars qw($VERSION @ISA);
 @ISA = qw(Spreadsheet::WriteExcel::BIFFwriter);
 
-$VERSION = '2.11';
+$VERSION = '2.13';
 
 ###############################################################################
 #
@@ -74,6 +74,7 @@
     $self->{_active_pane}       = 3;
     $self->{_frozen}            = 0;
     $self->{_selected}          = 0;
+    $self->{_hidden}            = 0;
 
     $self->{_paper_size}        = 0x0;
     $self->{_orientation}       = 0x1;
@@ -376,7 +377,8 @@
 
     my $self = shift;
 
-    $self->{_selected} = 1;
+    $self->{_hidden}         = 0; # Selected worksheet can't be hidden.
+    $self->{_selected}       = 1;
 }
 
 
@@ -391,13 +393,33 @@
 
     my $self = shift;
 
-    $self->{_selected} = 1;
+    $self->{_hidden}         = 0; # Active worksheet can't be hidden.
+    $self->{_selected}       = 1;
     ${$self->{_activesheet}} = $self->{_index};
 }
 
 
 ###############################################################################
 #
+# hide()
+#
+# Hide this worksheet.
+#
+sub hide {
+
+    my $self = shift;
+
+    $self->{_hidden}         = 1;
+
+    # A hidden worksheet shouldn't be active or selected.
+    $self->{_selected}       = 0;
+    ${$self->{_activesheet}} = 0;
+    ${$self->{_firstsheet}}  = 0;
+}
+
+
+###############################################################################
+#
 # set_first_sheet()
 #
 # Set this worksheet as the first visible sheet. This is necessary
@@ -408,7 +430,8 @@
 
     my $self = shift;
 
-    ${$self->{_firstsheet}} = $self->{_index};
+    $self->{_hidden}         = 0; # Active worksheet can't be hidden.
+    ${$self->{_firstsheet}}  = $self->{_index};
 }
 
 
@@ -1238,13 +1261,28 @@
     my $col    = $_[2];
     my $format = $_[3];
 
+    my $error = "Error: refer to merge_range() in the documentation. " .
+                 "Can't use previously merged format in non-merged cell";
+
     if (ref($format)) {
+        # Temp code to prevent merged formats in non-merged cells.
+        croak $error if $format->{_used_merge} == 1;
+        $format->{_used_merge} = -1;
+
         return $format->get_xf_index();
     }
     elsif (exists $self->{_row_formats}->{$row}) {
+        # Temp code to prevent merged formats in non-merged cells.
+        croak $error if $self->{_row_formats}->{$row}->{_used_merge} == 1;
+        $self->{_row_formats}->{$row}->{_used_merge} = -1;
+
         return $self->{_row_formats}->{$row}->get_xf_index();
     }
     elsif (exists $self->{_col_formats}->{$col}) {
+        # Temp code to prevent merged formats in non-merged cells.
+        croak $error if $self->{_col_formats}->{$col}->{_used_merge} == 1;
+        $self->{_col_formats}->{$col}->{_used_merge} = -1;
+
         return $self->{_col_formats}->{$col}->get_xf_index();
     }
     else {
@@ -3322,6 +3360,14 @@
     my $format   = $_[5];
 
 
+    # Temp code to prevent merged formats in non-merged cells.
+    my $error = "Error: refer to merge_range() in the documentation. " .
+                "Can't use previously non-merged format in merged cells";
+
+    croak $error if $format->{_used_merge} == -1;
+    $format->{_used_merge} = 0; # Until the end of this function.
+
+
     # Set the merge_range property of the format object. For BIFF8+.
     $format->set_merge_range();
 
@@ -3345,6 +3391,10 @@
     }
 
     $self->merge_cells($rwFirst, $colFirst, $rwLast, $colLast);
+
+    # Temp code to prevent merged formats in non-merged cells.
+    $format->{_used_merge} = 1;
+
 }
 
 

Modified: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel.pm
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel.pm	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/lib/Spreadsheet/WriteExcel.pm	2005-04-23 00:22:10 UTC (rev 951)
@@ -21,7 +21,7 @@
 use vars qw($VERSION @ISA);
 @ISA = qw(Spreadsheet::WriteExcel::Workbook Exporter);
 
-$VERSION = '2.12'; # Months mind
+$VERSION = '2.13'; # Impossible to Tell
 
 
 
@@ -63,7 +63,7 @@
 
 =head1 VERSION
 
-This document refers to version 2.12 of Spreadsheet::WriteExcel, released March 22, 2005.
+This document refers to version 2.13 of Spreadsheet::WriteExcel, released April 20, 2005.
 
 
 
@@ -1669,7 +1669,7 @@
 
     $worksheet->merge_range('B3:D4', 'Vertical and horizontal', $format);
 
-B<WARNING>. The format object that is used with a C<merge_range()> method call is marked internally as being associated with a merged range. As such, B<it should not be used for other formatting>. This will be fixed in a later version. See the L<BUGS> section.
+B<WARNING>. The format object that is used with a C<merge_range()> method call is marked internally as being associated with a merged range. It is a fatal error to use a merged format in a non-merged cell. Instead you should use separate formats for merged and non-merged cells. This restriction will be removed in a future release.
 
 C<merge_range()> writes its $token argument using the worksheet C<write()> method. Therefore it will handle numbers, strings, formulas or urls as required.
 
@@ -3627,6 +3627,7 @@
     outline.pl              An example of outlines and grouping.
     panes.pl                An examples of how to create panes.
     protection.pl           Example of cell locking and formula hiding.
+    hide_sheet.pl           Simple example of hiding a worksheet.
     repeat.pl               Example of writing repeated formulas.
     sales.pl                An example of a simple sales spreadsheet.
     sendmail.pl             Send an Excel email attachment using Mail::Sender.
@@ -3956,7 +3957,7 @@
 
 XML and UTF8 data on Perl 5.6 can cause Excel files created by Spreadsheet::WriteExcel to become corrupt. See L<Warning about XML::Parser and Perl 5.6> for further details.
 
-The format object that is used with a C<merge_range()> method call is marked internally as being associated with a merged range.If you use this format in a non-merged cell it will cause Excel to crash. The current workaround is to use separate formats for merged and non-merged cell. This will be fixed in a future release.
+The format object that is used with a C<merge_range()> method call is marked internally as being associated with a merged range.It is a fatal error to use a merged format in a non-merged cell. The current workaround is to use separate formats for merged and non-merged cell. This restriction will be removed in a future release.
 
 Nested formulas sometimes aren't parsed correctly and give a result of "#VALUE". If you come across a formula that parses like this, let me know.
 
@@ -3992,7 +3993,7 @@
 
 =item * Macros.
 
-This would solve the previous problem neatly. However, the format of Excel macros isn't documented.
+This would solve some other problems neatly. However, the format of Excel macros isn't documented.
 
 =item * Some feature that you really need. ;-)
 
@@ -4008,12 +4009,41 @@
 
 There is a Google group for discussing and asking questions about Spreadsheet::WriteExcel:  http://groups-beta.google.com/group/spreadsheet-writeexcel/
 
+=begin html
+
+<table style="border:1px solid #aa0033; font-size:small" align=center>
+  <tr>
+    <td rowspan=3>
+     <img src="http://groups-beta.google.com/groups/img/groups_medium.gif" height=58 width=150 alt="Google Groups">
+    </td>
+    <td colspan=2 align=center><b>Subscribe to Spreadsheet::WriteExcel</b></td>
+  </tr>
+  <form action="http://groups-beta.google.com/group/spreadsheet-writeexcel/boxsubscribe">
+  <tr>
+    <td>Email: <input type=text name=email></td>
+    <td>
+      <table
+       style="background-color:#ffcc33;padding:2px;border:2px outset #ffcc33;">
+      <tr>
+        <td>
+         <input type=submit name="sub" value="Subscribe">
+        </td>
+      </tr>
+      </table>
+    </td>
+  </tr>
+   </form>
+  <tr><td colspan=2 align=center>
+   <a href="http://groups-beta.google.com/group/spreadsheet-writeexcel">Browse Archives</a> at <a href="http://groups-beta.google.com/">groups-beta.google.com</a>
+  </td></tr>
+</table>
+
+=end html
+
 Alternatively you can keep up to date with future releases by subscribing at:
 http://freshmeat.net/projects/writeexcel/
 
 
-
-
 =head1 SEE ALSO
 
 Spreadsheet::ParseExcel: http://search.cpan.org/dist/Spreadsheet-ParseExcel
@@ -4043,7 +4073,7 @@
 
 The following people contributed to the debugging and testing of Spreadsheet::WriteExcel:
 
-Alexander Farber, Andre de Bruin, Arthur at ais, Artur Silveira da Cunha, Borgar Olsen, Brian White, Bob Mackay, Cedric Bouvier, Chad Johnson, CPAN testers, Daniel Berger, Daniel Gardner, Dmitry Kochurov, Eric Frazier, Ernesto Baschny, Felipe Pérez Galiana, Gordon Simpson, Hanc Pavel, Harold Bamford, James Holmes, James Wilkinson, Johan Ekenberg, Johann Hanne, Jonathan Scott Duff, J.C. Wren, Kenneth Stacey, Keith Miller, Kyle Krom, Marc Rosenthal, Markus Schmitz, Michael Braig, Michael Buschauer, Mike Blazer, Michael Erickson, Michael W J West, Ning Xie, Paul J. Falbe, Paul Medynski, Peter Dintelmann, Pierre Laplante, Praveen Kotha, Reto Badertscher, Rich Sorden, Shane Ashby, Shenyu Zheng, Stephan Loescher, Steve Sapovits, Sven Passig, Svetoslav Marinov, Tamas Gulacsi, Troy Daniels, Vahe Sarkissian.
+Alexander Farber, Andre de Bruin, Arthur at ais, Artur Silveira da Cunha, Borgar Olsen, Brian White, Bob Mackay, Cedric Bouvier, Chad Johnson, CPAN testers, Damyan Ivanov, Daniel Berger, Daniel Gardner, Dmitry Kochurov, Eric Frazier, Ernesto Baschny, Felipe Pérez Galiana, Gordon Simpson, Hanc Pavel, Harold Bamford, James Holmes, James Wilkinson, Johan Ekenberg, Johann Hanne, Jonathan Scott Duff, J.C. Wren, Kenneth Stacey, Keith Miller, Kyle Krom, Marc Rosenthal, Markus Schmitz, Michael Braig, Michael Buschauer, Mike Blazer, Michael Erickson, Michael W J West, Ning Xie, Paul J. Falbe, Paul Medynski, Peter Dintelmann, Pierre Laplante, Praveen Kotha, Reto Badertscher, Rich Sorden, Shane Ashby, Shenyu Zheng, Stephan Loescher, Steve Sapovits, Sven Passig, Svetoslav Marinov, Tamas Gulacsi, Troy Daniels, Vahe Sarkissian.
 
 The following people contributed patches, examples or Excel information:
 
@@ -4053,7 +4083,7 @@
 
 Additional thanks to Takanori Kawai for translating the documentation into Japanese.
 
-Dirk Eddelbuettel maintains the Debian distro.
+Gunnar Wolf maintains the Debian distro.
 
 Thanks to Damian Conway for the excellent Parse::RecDescent.
 
@@ -4068,14 +4098,22 @@
 
 John McNamara jmcnamara at cpan.org
 
-    Slow dulcimer, gavotte and bow, in autumn,
-    Basho and his friends go out to view the moon;
-    In summer, gasoline rainbow in the gutter,
+    Imagine a court of one: the queen a young mother,
+    Unhappy, alone all day with her firstborn child
+    And her new baby in a squalid apartment
 
-    The secret courtesy that courses like ichor
-    Through the old form of the rude, full-scale joke,
-    Impossible to tell in writing.
+    Of too few rooms, a different race from her neighbors.
+    She tells the child she's going to kill herself.
+    She broods, she rages. Hoping to distract her,
 
+    The child cuts capers, he sings, he does imitations
+    Of different people in the building, he jokes,
+    He feels if he keeps her alive until the father
+
+    Gets home from work, they'll be okay till morning.
+    It's laughter versus the bedroom and the pills.
+    What is he in his efforts but a courtier?
+
         -- Robert Pinsky
 
 

Added: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/01_merge_formats.t
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/01_merge_formats.t	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/01_merge_formats.t	2005-04-23 00:22:10 UTC (rev 951)
@@ -0,0 +1,125 @@
+#!/usr/bin/perl -w
+
+###############################################################################
+#
+# A test for Spreadsheet::WriteExcel.
+#
+# Tests to ensure merge formats aren't used in non-merged cells and
+# vice-versa. This is temporary feature to prevent users from inadvertently
+# making this error.
+#
+# reverse('©'), April 2005, John McNamara, jmcnamara at cpan.org
+#
+
+
+use strict;
+
+use Spreadsheet::WriteExcel;
+use Test::More tests => 8;
+
+
+###############################################################################
+#
+# Tests setup
+#
+my $test_file           = "temp_test_file.xml";
+my $workbook            = Spreadsheet::WriteExcel->new($test_file);
+my $worksheet           = $workbook->add_worksheet();
+my $merged_format       = $workbook->add_format(bold => 1);
+my $non_merged_format   = $workbook->add_format(bold => 1);
+
+
+$worksheet->set_row(5, undef, $merged_format);
+$worksheet->set_column('G:G', undef, $merged_format);
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write      ('A1',    'Test', $non_merged_format);
+    $worksheet->merge_range('A3:B4', 'Test', $merged_format    );
+};
+ok(! $@, " \tNormal usage.");
+
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write      ('D1',    'Test', $merged_format    );
+};
+ok(  $@, " \tMerge format in non-merged cell.");
+
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->merge_range('D3:E4', 'Test', $non_merged_format);
+};
+ok(  $@, " \tNon merge format in merged cells.");
+
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write('G1', 'Test',);
+};
+ok(  $@, " \tMerge format in column.");
+
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write('A6', 'Test',);
+};
+ok(  $@, " \tMerge format in row.");
+
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write('G6', 'Test',);
+};
+ok(  $@, " \tMerge format in column and row.");
+
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write('H7', 'Test',);
+};
+ok(! $@, " \tNo merge format in column and row.");
+
+###############################################################################
+#
+# Test
+#
+eval {
+    $worksheet->write      ('A1',    'Test', $non_merged_format);
+    $worksheet->merge_range('A3:B4', 'Test', $merged_format    );
+};
+ok(! $@, " \tNormal usage again.");
+
+
+
+
+$workbook->close();
+unlink $test_file;
+
+
+__END__
+
+
+

Added: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/11_date_time.t
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/11_date_time.t	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/11_date_time.t	2005-04-23 00:22:10 UTC (rev 951)
@@ -0,0 +1,494 @@
+#!/usr/bin/perl -w
+
+###############################################################################
+#
+# A test for Spreadsheet::WriteExcel.
+#
+# Tests date and time handling.
+#
+# reverse('©'), May 2004, John McNamara, jmcnamara at cpan.org
+#
+
+use strict;
+
+use Spreadsheet::WriteExcel;
+use Test::More tests => 100;
+
+my $date_time;
+my $number;
+my $result;
+my $test_file = "temp_test_file.xls";
+
+my $workbook  = Spreadsheet::WriteExcel->new($test_file);
+my $worksheet = $workbook->add_worksheet();
+
+
+# Set float difference limit to half of an Excel millisecond
+my $flt_delta = 0.5/(24*60*60*1000);
+
+
+##############################################################################
+#
+# Float comparison function.
+#
+sub flt_cmp {
+    return abs($_[0] - $_[1]) < $flt_delta;
+}
+
+
+
+##############################################################################
+#
+# Test the flt_cmp() function used in the other tests.
+#
+
+$date_time = '1899-12-31T00:00:00.0004';
+$number    = 0;
+$result    = $worksheet->convert_date_time($date_time);
+$result    = -1 unless defined $result;
+
+# Test 1. This should pass. It is less than the float diff limit.
+ok(flt_cmp($number, $result),
+           " Testing convert_date_time: $date_time $number");
+
+$date_time = '1899-12-31T00:00:00.0005';
+$number    = 0;
+$result    = $worksheet->convert_date_time($date_time);
+$result    = -1 unless defined $result;
+
+# Test 2. This should fail. It is equal to the float diff limit.
+my $diff   = ! flt_cmp($number, $result);
+ok($diff, " Testing convert_date_time: $date_time $number");
+
+
+
+
+##############################################################################
+#
+# Test the time data generated in Excel.
+#
+while (<DATA>) {
+
+    last if /^# stop/; # For debugging
+    next unless /\S/;  # Ignore blank lines
+    next if /^#/;      # Ignore comments
+
+    if (/"DateTime">([^<]+)/) {
+        my $date_time = $1;
+        my $line      = <DATA>;
+
+        if ($line =~ /"Number">([^<]+)/) {
+            my $number = 0 + $1;
+            my $result = $worksheet->convert_date_time($date_time);
+               $result = -1 unless defined $result;
+
+            ok(flt_cmp($number, $result),
+                       " Testing convert_date_time: $date_time $number")
+               or diag("difference between $number and $result\n" .
+                       "= " . abs($number -$result) . "\n".
+                       "> $flt_delta");
+        }
+    }
+}
+
+# Clean up
+$workbook->close();
+unlink $test_file;
+
+
+__DATA__
+
+
+# Test data taken from Excel in XML format.
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">1899-12-31T00:00:00.000</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">0</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">1982-08-25T00:15:20.213</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">30188.010650613425</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2065-04-19T00:16:48.290</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">60376.011670023145</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2147-12-15T00:55:25.446</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">90565.038488958337</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2230-08-10T01:02:46.891</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">120753.04359827546</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2313-04-06T01:04:15.597</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">150942.04462496529</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2395-11-30T01:09:40.889</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">181130.04838991899</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2478-07-25T01:11:32.560</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">211318.04968240741</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2561-03-21T01:30:19.169</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">241507.06272186342</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2643-11-15T01:48:25.580</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">271695.07529606484</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2726-07-12T02:03:31.919</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">301884.08578609955</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2809-03-06T02:11:11.986</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">332072.09111094906</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2891-10-31T02:24:37.095</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">362261.10042934027</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">2974-06-26T02:35:07.220</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">392449.10772245371</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3057-02-19T02:45:12.109</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">422637.1147234838</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3139-10-17T03:06:39.990</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">452826.12962951389</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3222-06-11T03:08:08.251</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">483014.13065105322</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3305-02-05T03:19:12.576</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">513203.13834</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3387-10-01T03:29:42.574</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">543391.14563164348</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3470-05-27T03:37:30.813</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">573579.15105107636</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3553-01-21T04:14:38.231</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">603768.17683137732</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3635-09-16T04:16:28.559</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">633956.17810832174</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3718-05-13T04:17:58.222</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">664145.17914608796</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3801-01-06T04:21:41.794</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">694333.18173372687</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3883-09-02T04:56:35.792</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">724522.20596981479</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">3966-04-28T05:25:14.885</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">754710.2258667245</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4048-12-21T05:26:05.724</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">784898.22645513888</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4131-08-18T05:46:44.068</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">815087.24078782403</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4214-04-13T05:48:01.141</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">845275.24167987274</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4296-12-07T05:53:52.315</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">875464.24574438657</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4379-08-03T06:14:48.580</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">905652.26028449077</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4462-03-28T06:46:15.738</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">935840.28212659725</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4544-11-22T07:31:20.407</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">966029.31343063654</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4627-07-19T07:58:33.754</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">996217.33233511576</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4710-03-15T08:07:43.130</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1026406.3386936343</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4792-11-07T08:29:11.091</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1056594.3536005903</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4875-07-04T09:08:15.328</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1086783.3807329629</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">4958-02-27T09:30:41.781</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1116971.3963169097</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5040-10-23T09:34:04.462</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1147159.3986627546</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5123-06-20T09:37:23.945</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1177348.4009715857</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5206-02-12T09:37:56.655</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1207536.4013501736</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5288-10-08T09:45:12.230</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1237725.406391551</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5371-06-04T09:54:14.782</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1267913.412671088</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5454-01-28T09:54:22.108</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1298101.4127558796</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5536-09-24T10:01:36.151</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1328290.4177795255</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5619-05-20T12:09:48.602</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1358478.5068125231</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5702-01-14T12:34:08.549</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1388667.5237100578</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5784-09-08T12:56:06.495</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1418855.5389640625</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5867-05-06T12:58:58.217</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1449044.5409515856</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">5949-12-30T12:59:54.263</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1479232.5416002662</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6032-08-24T13:34:41.331</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1509420.5657561459</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6115-04-21T13:58:28.601</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1539609.5822754744</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6197-12-14T14:02:16.899</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1569797.5849178126</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6280-08-10T14:36:17.444</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1599986.6085352316</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6363-04-06T14:37:57.451</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1630174.60969272</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6445-11-30T14:57:42.757</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1660363.6234115392</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6528-07-26T15:10:48.307</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1690551.6325035533</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6611-03-22T15:14:39.890</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1720739.635183912</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6693-11-15T15:19:47.988</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1750928.6387498612</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6776-07-11T16:04:24.344</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1781116.6697262037</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6859-03-07T16:22:23.952</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1811305.6822216667</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">6941-10-31T16:29:55.999</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1841493.6874536921</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7024-06-26T16:58:20.259</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1871681.7071789235</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7107-02-21T17:04:02.415</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1901870.7111390624</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7189-10-16T17:18:29.630</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1932058.7211762732</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7272-06-11T17:47:21.323</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1962247.7412190163</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7355-02-05T17:53:29.866</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">1992435.7454845603</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7437-10-02T17:53:41.076</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2022624.7456143056</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7520-05-28T17:55:06.044</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2052812.7465977315</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7603-01-21T18:14:49.151</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2083000.7602910995</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7685-09-16T18:17:45.738</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2113189.7623349307</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7768-05-12T18:29:59.700</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2143377.7708298611</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7851-01-07T18:33:21.233</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2173566.773162419</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">7933-09-02T19:14:24.673</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2203754.8016744559</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8016-04-27T19:17:12.816</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2233942.8036205554</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8098-12-22T19:23:36.418</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2264131.8080603937</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8181-08-17T19:46:25.908</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2294319.8239109721</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8264-04-13T20:07:47.314</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2324508.8387420601</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8346-12-08T20:31:37.603</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2354696.855296331</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8429-08-03T20:39:57.770</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2384885.8610853008</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8512-03-29T20:50:17.067</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2415073.8682530904</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8594-11-22T21:02:57.827</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2445261.8770581828</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8677-07-19T21:23:05.519</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2475450.8910360998</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8760-03-14T21:34:49.572</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2505638.8991848612</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8842-11-08T21:39:05.944</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2535827.9021521294</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">8925-07-04T21:39:18.426</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2566015.9022965971</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9008-02-28T21:46:07.769</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2596203.9070343636</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9090-10-24T21:57:55.662</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2626392.9152275696</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9173-06-19T22:19:11.732</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2656580.9299968979</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9256-02-13T22:23:51.376</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2686769.9332335186</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9338-10-09T22:27:58.771</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2716957.9360968866</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9421-06-05T22:43:30.392</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2747146.9468795368</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9504-01-30T22:48:25.834</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2777334.9502990046</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9586-09-24T22:53:51.727</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2807522.9540709145</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9669-05-20T23:12:56.536</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2837711.9673210187</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9752-01-14T23:15:54.109</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2867899.9693762613</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9834-09-10T23:17:12.632</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2898088.9702850925</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s21"><Data ss:Type="DateTime">9999-12-31T23:59:59.000</Data></Cell>
+    <Cell ss:StyleID="s22" ss:Formula="=RC[-1]"><Data ss:Type="Number">2958465.999988426</Data></Cell>
+   </Row>

Added: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/12_date_only.t
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/12_date_only.t	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/12_date_only.t	2005-04-23 00:22:10 UTC (rev 951)
@@ -0,0 +1,505 @@
+#!/usr/bin/perl -w
+
+###############################################################################
+#
+# A test for Spreadsheet::WriteExcel.
+#
+# Tests date and time handling. Tests dates in 1900 and 1904 format.
+#
+# reverse('©'), May 2004, John McNamara, jmcnamara at cpan.org
+#
+
+use strict;
+
+use Spreadsheet::WriteExcel;
+use Test::More tests => 420;
+
+my $date_time;
+my $number;
+my $result;
+my $test_file = "temp_test_file.xls";
+
+my $workbook  = Spreadsheet::WriteExcel->new($test_file);
+my $worksheet = $workbook->add_worksheet();
+
+
+
+
+
+
+##############################################################################
+#
+# Test the dates generated by Excel.
+#
+while (<DATA>) {
+    last if /^# stop/; # For debugging
+
+    $worksheet->{_1904} = 0 if /Excel 1900/; # Change date system
+    $worksheet->{_1904} = 1 if /Excel 1904/; # Change date system
+
+    next unless /\S/;  # Ignore blank lines
+    next if /^#/;      # Ignore comments
+
+
+    my ($count, $date, $result) = split;
+
+    my $number = $worksheet->convert_date_time($date);
+       $number = -1 unless defined $number;
+
+    is($number, $result, " Testing convert_date_time: $date $result")
+
+}
+
+
+# Clean up
+$workbook->close();
+unlink $test_file;
+
+
+
+__DATA__
+#
+# The following data was generated by Excel.
+#
+
+#
+# Excel 1900 date system
+#
+1      1899-12-31T    0
+2      1900-01-00T    0
+3      1900-01-01T    1
+4      1900-02-27T    58
+5      1900-02-28T    59
+6      1900-02-29T    60
+7      1900-03-01T    61
+8      1900-03-02T    62
+9      1900-03-11T    71
+10     1900-04-08T    99
+11     1900-09-12T    256
+12     1901-05-03T    489
+13     1901-10-13T    652
+14     1902-02-15T    777
+15     1902-06-06T    888
+16     1902-09-25T    999
+17     1902-09-27T    1001
+18     1903-04-26T    1212
+19     1903-08-05T    1313
+20     1903-12-31T    1461
+21     1904-01-01T    1462
+22     1904-02-28T    1520
+23     1904-02-29T    1521
+24     1904-03-01T    1522
+25     1907-02-27T    2615
+26     1907-02-28T    2616
+27     1907-03-01T    2617
+28     1907-03-02T    2618
+29     1907-03-03T    2619
+30     1907-03-04T    2620
+31     1907-03-05T    2621
+32     1907-03-06T    2622
+33     1999-01-01T    36161
+34     1999-01-31T    36191
+35     1999-02-01T    36192
+36     1999-02-28T    36219
+37     1999-03-01T    36220
+38     1999-03-31T    36250
+39     1999-04-01T    36251
+40     1999-04-30T    36280
+41     1999-05-01T    36281
+42     1999-05-31T    36311
+43     1999-06-01T    36312
+44     1999-06-30T    36341
+45     1999-07-01T    36342
+46     1999-07-31T    36372
+47     1999-08-01T    36373
+48     1999-08-31T    36403
+49     1999-09-01T    36404
+50     1999-09-30T    36433
+51     1999-10-01T    36434
+52     1999-10-31T    36464
+53     1999-11-01T    36465
+54     1999-11-30T    36494
+55     1999-12-01T    36495
+56     1999-12-31T    36525
+57     2000-01-01T    36526
+58     2000-01-31T    36556
+59     2000-02-01T    36557
+60     2000-02-29T    36585
+61     2000-03-01T    36586
+62     2000-03-31T    36616
+63     2000-04-01T    36617
+64     2000-04-30T    36646
+65     2000-05-01T    36647
+66     2000-05-31T    36677
+67     2000-06-01T    36678
+68     2000-06-30T    36707
+69     2000-07-01T    36708
+70     2000-07-31T    36738
+71     2000-08-01T    36739
+72     2000-08-31T    36769
+73     2000-09-01T    36770
+74     2000-09-30T    36799
+75     2000-10-01T    36800
+76     2000-10-31T    36830
+77     2000-11-01T    36831
+78     2000-11-30T    36860
+79     2000-12-01T    36861
+80     2000-12-31T    36891
+81     2001-01-01T    36892
+82     2001-01-31T    36922
+83     2001-02-01T    36923
+84     2001-02-28T    36950
+85     2001-03-01T    36951
+86     2001-03-31T    36981
+87     2001-04-01T    36982
+88     2001-04-30T    37011
+89     2001-05-01T    37012
+90     2001-05-31T    37042
+91     2001-06-01T    37043
+92     2001-06-30T    37072
+93     2001-07-01T    37073
+94     2001-07-31T    37103
+95     2001-08-01T    37104
+96     2001-08-31T    37134
+97     2001-09-01T    37135
+98     2001-09-30T    37164
+99     2001-10-01T    37165
+100    2001-10-31T    37195
+101    2001-11-01T    37196
+102    2001-11-30T    37225
+103    2001-12-01T    37226
+104    2001-12-31T    37256
+105    2400-01-01T    182623
+106    2400-01-31T    182653
+107    2400-02-01T    182654
+108    2400-02-29T    182682
+109    2400-03-01T    182683
+110    2400-03-31T    182713
+111    2400-04-01T    182714
+112    2400-04-30T    182743
+113    2400-05-01T    182744
+114    2400-05-31T    182774
+115    2400-06-01T    182775
+116    2400-06-30T    182804
+117    2400-07-01T    182805
+118    2400-07-31T    182835
+119    2400-08-01T    182836
+120    2400-08-31T    182866
+121    2400-09-01T    182867
+122    2400-09-30T    182896
+123    2400-10-01T    182897
+124    2400-10-31T    182927
+125    2400-11-01T    182928
+126    2400-11-30T    182957
+127    2400-12-01T    182958
+128    2400-12-31T    182988
+129    4000-01-01T    767011
+130    4000-01-31T    767041
+131    4000-02-01T    767042
+132    4000-02-29T    767070
+133    4000-03-01T    767071
+134    4000-03-31T    767101
+135    4000-04-01T    767102
+136    4000-04-30T    767131
+137    4000-05-01T    767132
+138    4000-05-31T    767162
+139    4000-06-01T    767163
+140    4000-06-30T    767192
+141    4000-07-01T    767193
+142    4000-07-31T    767223
+143    4000-08-01T    767224
+144    4000-08-31T    767254
+145    4000-09-01T    767255
+146    4000-09-30T    767284
+147    4000-10-01T    767285
+148    4000-10-31T    767315
+149    4000-11-01T    767316
+150    4000-11-30T    767345
+151    4000-12-01T    767346
+152    4000-12-31T    767376
+153    4321-01-01T    884254
+154    4321-01-31T    884284
+155    4321-02-01T    884285
+156    4321-02-28T    884312
+157    4321-03-01T    884313
+158    4321-03-31T    884343
+159    4321-04-01T    884344
+160    4321-04-30T    884373
+161    4321-05-01T    884374
+162    4321-05-31T    884404
+163    4321-06-01T    884405
+164    4321-06-30T    884434
+165    4321-07-01T    884435
+166    4321-07-31T    884465
+167    4321-08-01T    884466
+168    4321-08-31T    884496
+169    4321-09-01T    884497
+170    4321-09-30T    884526
+171    4321-10-01T    884527
+172    4321-10-31T    884557
+173    4321-11-01T    884558
+174    4321-11-30T    884587
+175    4321-12-01T    884588
+176    4321-12-31T    884618
+177    9999-01-01T    2958101
+178    9999-01-31T    2958131
+179    9999-02-01T    2958132
+180    9999-02-28T    2958159
+181    9999-03-01T    2958160
+182    9999-03-31T    2958190
+183    9999-04-01T    2958191
+184    9999-04-30T    2958220
+185    9999-05-01T    2958221
+186    9999-05-31T    2958251
+187    9999-06-01T    2958252
+188    9999-06-30T    2958281
+189    9999-07-01T    2958282
+190    9999-07-31T    2958312
+191    9999-08-01T    2958313
+192    9999-08-31T    2958343
+193    9999-09-01T    2958344
+194    9999-09-30T    2958373
+195    9999-10-01T    2958374
+196    9999-10-31T    2958404
+197    9999-11-01T    2958405
+198    9999-11-30T    2958434
+199    9999-12-01T    2958435
+200    9999-12-31T    2958465
+
+#
+# Excel 1904 date system
+#
+201    1904-01-01T    0
+202    1904-01-31T    30
+203    1904-02-01T    31
+204    1904-02-29T    59
+205    1904-03-01T    60
+206    1904-03-31T    90
+207    1904-04-01T    91
+208    1904-04-30T    120
+209    1904-05-01T    121
+210    1904-05-31T    151
+211    1904-06-01T    152
+212    1904-06-30T    181
+213    1904-07-01T    182
+214    1904-07-31T    212
+215    1904-08-01T    213
+216    1904-08-31T    243
+217    1904-09-01T    244
+218    1904-09-30T    273
+219    1904-10-01T    274
+220    1904-10-31T    304
+221    1904-11-01T    305
+222    1904-11-30T    334
+223    1904-12-01T    335
+224    1904-12-31T    365
+225    1907-02-27T    1153
+226    1907-02-28T    1154
+227    1907-03-01T    1155
+228    1907-03-02T    1156
+229    1907-03-03T    1157
+230    1907-03-04T    1158
+231    1907-03-05T    1159
+232    1907-03-06T    1160
+233    1999-01-01T    34699
+234    1999-01-31T    34729
+235    1999-02-01T    34730
+236    1999-02-28T    34757
+237    1999-03-01T    34758
+238    1999-03-31T    34788
+239    1999-04-01T    34789
+240    1999-04-30T    34818
+241    1999-05-01T    34819
+242    1999-05-31T    34849
+243    1999-06-01T    34850
+244    1999-06-30T    34879
+245    1999-07-01T    34880
+246    1999-07-31T    34910
+247    1999-08-01T    34911
+248    1999-08-31T    34941
+249    1999-09-01T    34942
+250    1999-09-30T    34971
+251    1999-10-01T    34972
+252    1999-10-31T    35002
+253    1999-11-01T    35003
+254    1999-11-30T    35032
+255    1999-12-01T    35033
+256    1999-12-31T    35063
+257    2000-01-01T    35064
+258    2000-01-31T    35094
+259    2000-02-01T    35095
+260    2000-02-29T    35123
+261    2000-03-01T    35124
+262    2000-03-31T    35154
+263    2000-04-01T    35155
+264    2000-04-30T    35184
+265    2000-05-01T    35185
+266    2000-05-31T    35215
+267    2000-06-01T    35216
+268    2000-06-30T    35245
+269    2000-07-01T    35246
+270    2000-07-31T    35276
+271    2000-08-01T    35277
+272    2000-08-31T    35307
+273    2000-09-01T    35308
+274    2000-09-30T    35337
+275    2000-10-01T    35338
+276    2000-10-31T    35368
+277    2000-11-01T    35369
+278    2000-11-30T    35398
+279    2000-12-01T    35399
+280    2000-12-31T    35429
+281    2001-01-01T    35430
+282    2001-01-31T    35460
+283    2001-02-01T    35461
+284    2001-02-28T    35488
+285    2001-03-01T    35489
+286    2001-03-31T    35519
+287    2001-04-01T    35520
+288    2001-04-30T    35549
+289    2001-05-01T    35550
+290    2001-05-31T    35580
+291    2001-06-01T    35581
+292    2001-06-30T    35610
+293    2001-07-01T    35611
+294    2001-07-31T    35641
+295    2001-08-01T    35642
+296    2001-08-31T    35672
+297    2001-09-01T    35673
+298    2001-09-30T    35702
+299    2001-10-01T    35703
+300    2001-10-31T    35733
+301    2001-11-01T    35734
+302    2001-11-30T    35763
+303    2001-12-01T    35764
+304    2001-12-31T    35794
+305    2400-01-01T    181161
+306    2400-01-31T    181191
+307    2400-02-01T    181192
+308    2400-02-29T    181220
+309    2400-03-01T    181221
+310    2400-03-31T    181251
+311    2400-04-01T    181252
+312    2400-04-30T    181281
+313    2400-05-01T    181282
+314    2400-05-31T    181312
+315    2400-06-01T    181313
+316    2400-06-30T    181342
+317    2400-07-01T    181343
+318    2400-07-31T    181373
+319    2400-08-01T    181374
+320    2400-08-31T    181404
+321    2400-09-01T    181405
+322    2400-09-30T    181434
+323    2400-10-01T    181435
+324    2400-10-31T    181465
+325    2400-11-01T    181466
+326    2400-11-30T    181495
+327    2400-12-01T    181496
+328    2400-12-31T    181526
+329    4000-01-01T    765549
+330    4000-01-31T    765579
+331    4000-02-01T    765580
+332    4000-02-29T    765608
+333    4000-03-01T    765609
+334    4000-03-31T    765639
+335    4000-04-01T    765640
+336    4000-04-30T    765669
+337    4000-05-01T    765670
+338    4000-05-31T    765700
+339    4000-06-01T    765701
+340    4000-06-30T    765730
+341    4000-07-01T    765731
+342    4000-07-31T    765761
+343    4000-08-01T    765762
+344    4000-08-31T    765792
+345    4000-09-01T    765793
+346    4000-09-30T    765822
+347    4000-10-01T    765823
+348    4000-10-31T    765853
+349    4000-11-01T    765854
+350    4000-11-30T    765883
+351    4000-12-01T    765884
+352    4000-12-31T    765914
+353    4321-01-01T    882792
+354    4321-01-31T    882822
+355    4321-02-01T    882823
+356    4321-02-28T    882850
+357    4321-03-01T    882851
+358    4321-03-31T    882881
+359    4321-04-01T    882882
+360    4321-04-30T    882911
+361    4321-05-01T    882912
+362    4321-05-31T    882942
+363    4321-06-01T    882943
+364    4321-06-30T    882972
+365    4321-07-01T    882973
+366    4321-07-31T    883003
+367    4321-08-01T    883004
+368    4321-08-31T    883034
+369    4321-09-01T    883035
+370    4321-09-30T    883064
+371    4321-10-01T    883065
+372    4321-10-31T    883095
+373    4321-11-01T    883096
+374    4321-11-30T    883125
+375    4321-12-01T    883126
+376    4321-12-31T    883156
+377    9999-01-01T    2956639
+378    9999-01-31T    2956669
+379    9999-02-01T    2956670
+380    9999-02-28T    2956697
+381    9999-03-01T    2956698
+382    9999-03-31T    2956728
+383    9999-04-01T    2956729
+384    9999-04-30T    2956758
+385    9999-05-01T    2956759
+386    9999-05-31T    2956789
+387    9999-06-01T    2956790
+388    9999-06-30T    2956819
+389    9999-07-01T    2956820
+390    9999-07-31T    2956850
+391    9999-08-01T    2956851
+392    9999-08-31T    2956881
+393    9999-09-01T    2956882
+394    9999-09-30T    2956911
+395    9999-10-01T    2956912
+396    9999-10-31T    2956942
+397    9999-11-01T    2956943
+398    9999-11-30T    2956972
+399    9999-12-01T    2956973
+400    9999-12-31T    2957003
+
+
+#
+# The following dates are invalid.
+#
+
+#
+# Excel 1900 date system
+#
+401    0000-12-30T    -1 # Below year range.
+402    1000-12-30T    -1 # Below year range.
+403    1899-12-30T    -1 # Below year range.
+404    2002-02-29T    -1 # False leap-day.
+405    2000-00-00T    -1 # No month or day.
+406    2000-01-00T    -1 # No day.
+407    2000-00-01T    -1 # No month.
+408    2000-13-01T    -1 # Month out of range.
+409    2000-12-32T    -1 # Day out of range.
+410   10000-01-01T    -1 # Year out of range.
+
+#
+# Excel 1904 date system
+#
+411    1899-12-31T    -1 # Below year range.
+412    1900-01-01T    -1 # Below year range.
+413    1903-12-31T    -1 # Below year range.
+414    2001-02-29T    -1 # False leap-day.
+415    2000-00-00T    -1 # No month or day.
+416    2000-01-00T    -1 # No day.
+417    2000-00-01T    -1 # No month.
+418    2000-13-01T    -1 # Month out of range.
+419    2000-12-32T    -1 # Day out of range.
+420   10000-01-01T    -1 # Year out of range.
+

Added: packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/13_date_seconds.t
===================================================================
--- packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/13_date_seconds.t	2005-04-23 00:22:01 UTC (rev 950)
+++ packages/libspreadsheet-writeexcel-perl/branches/upstream/current/t/13_date_seconds.t	2005-04-23 00:22:10 UTC (rev 951)
@@ -0,0 +1,524 @@
+#!/usr/bin/perl -w
+
+###############################################################################
+#
+# A test for Spreadsheet::WriteExcel.
+#
+# Tests date and time second handling.
+#
+# reverse('©'), May 2004, John McNamara, jmcnamara at cpan.org
+#
+
+use strict;
+
+use Spreadsheet::WriteExcel;
+use Test::More tests => 104;
+
+my $date_time;
+my $number;
+my $result;
+my $test_file = "temp_test_file.xls";
+
+my $workbook  = Spreadsheet::WriteExcel->new($test_file);
+my $worksheet = $workbook->add_worksheet();
+
+
+# Set float difference limit to half of an Excel millisecond
+my $flt_delta = 0.5/(24*60*60*1000);
+
+
+##############################################################################
+#
+# Float comparison function.
+#
+sub flt_cmp {
+    return abs($_[0] - $_[1]) < $flt_delta;
+}
+
+
+##############################################################################
+#
+# Test the flt_cmp() function used in the other tests.
+#
+
+$date_time = '1899-12-31T00:00:00.0004';
+$number    = 0;
+$result    = $worksheet->convert_date_time($date_time);
+$result    = -1 unless defined $result;
+
+# Test 1. This should pass. It is less than the float diff limit.
+ok(flt_cmp($number, $result),
+           " Testing flt_cmp() for $date_time $number");
+
+$date_time = '1899-12-31T00:00:00.0005';
+$number    = 0;
+$result    = $worksheet->convert_date_time($date_time);
+$result    = -1 unless defined $result;
+
+# Test 2. This should fail. It is equal to the float diff limit.
+my $diff   = ! flt_cmp($number, $result);
+ok($diff, " Testing flt_cmp() for $date_time $number");
+
+
+
+
+##############################################################################
+#
+# Test some false times.
+#
+
+# These should fail.
+my $fail;
+
+$date_time = '1899-12-31T24:00:00.000';
+$fail      = ! $worksheet->convert_date_time($date_time);
+ok($fail,  " Testing incorrect time: $date_time\tincorrect hour caught.");
+
+$date_time = '1899-12-31T00:60:00.000';
+$fail      = ! $worksheet->convert_date_time($date_time);
+ok($fail,  " Testing incorrect time: $date_time\tincorrect mins caught.");
+
+$date_time = '1899-12-31T00:00:60.000';
+$fail      = ! $worksheet->convert_date_time($date_time);
+ok($fail,  " Testing incorrect time: $date_time\tincorrect secs caught.");
+
+$date_time = '1899-12-31T00:00:59.9999999999999999999';
+$fail      = ! $worksheet->convert_date_time($date_time);
+ok($fail,  " Testing incorrect time: $date_time\tincorrect secs caught.");
+
+
+
+
+
+##############################################################################
+#
+# Test the time data generated in Excel.
+#
+while (<DATA>) {
+
+    last if /^# stop/; # For debugging
+    next unless /\S/;  # Ignore blank lines
+    next if /^#/;      # Ignore comments
+
+    if (/"DateTime">([^<]+)/) {
+        my $date_time = $1;
+        my $line      = <DATA>;
+
+        if ($line =~ /"Number">([^<]+)/) {
+            my $number = 0 + $1;
+            my $result = $worksheet->convert_date_time($date_time);
+               $result = -1 unless defined $result;
+
+            ok(flt_cmp($number, $result),
+                       " Testing convert_date_time: $date_time  $number")
+               or diag("difference between $number and $result\n" .
+                       "= " . abs($number -$result) . "\n".
+                       "> $flt_delta");
+        }
+    }
+}
+
+# Clean up
+$workbook->close();
+unlink $test_file;
+
+
+__DATA__
+
+
+# Test data taken from Excel in XML format.
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T00:00:00.000</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T00:15:20.213</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">1.0650613425925924E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T00:16:48.290</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">1.1670023148148148E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T00:55:25.446</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">3.8488958333333337E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T01:02:46.891</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">4.3598275462962965E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T01:04:15.597</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">4.4624965277777782E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T01:09:40.889</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">4.8389918981481483E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T01:11:32.560</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">4.9682407407407404E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T01:30:19.169</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">6.2721863425925936E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T01:48:25.580</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">7.5296064814814809E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T02:03:31.919</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">8.5786099537037031E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T02:11:11.986</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">9.1110949074074077E-2</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T02:24:37.095</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.10042934027777778</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T02:35:07.220</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.1077224537037037</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T02:45:12.109</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.11472348379629631</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T03:06:39.990</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.12962951388888888</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T03:08:08.251</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.13065105324074075</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T03:19:12.576</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.13833999999999999</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T03:29:42.574</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.14563164351851851</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T03:37:30.813</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.1510510763888889</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T04:14:38.231</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.1768313773148148</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T04:16:28.559</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.17810832175925925</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T04:17:58.222</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.17914608796296297</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T04:21:41.794</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.18173372685185185</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T04:56:35.792</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.2059698148148148</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T05:25:14.885</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.22586672453703704</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T05:26:05.724</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.22645513888888891</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T05:46:44.068</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.24078782407407406</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T05:48:01.141</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.2416798726851852</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T05:53:52.315</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.24574438657407408</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T06:14:48.580</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.26028449074074073</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T06:46:15.738</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.28212659722222222</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T07:31:20.407</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.31343063657407405</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T07:58:33.754</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.33233511574074076</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T08:07:43.130</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.33869363425925925</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T08:29:11.091</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.35360059027777774</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:08:15.328</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.380732962962963</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:30:41.781</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.39631690972222228</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:34:04.462</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.39866275462962958</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:37:23.945</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.40097158564814817</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:37:56.655</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.40135017361111114</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:45:12.230</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.40639155092592594</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:54:14.782</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.41267108796296298</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T09:54:22.108</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.41275587962962962</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T10:01:36.151</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.41777952546296299</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T12:09:48.602</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.50681252314814818</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T12:34:08.549</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.52371005787037039</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T12:56:06.495</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.53896406249999995</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T12:58:58.217</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.54095158564814816</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T12:59:54.263</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.54160026620370372</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T13:34:41.331</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.56575614583333333</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T13:58:28.601</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.58227547453703699</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T14:02:16.899</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.58491781249999997</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T14:36:17.444</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.60853523148148148</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T14:37:57.451</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.60969271990740748</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T14:57:42.757</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.6234115393518519</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T15:10:48.307</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.6325035532407407</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T15:14:39.890</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.63518391203703706</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T15:19:47.988</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.63874986111111109</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T16:04:24.344</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.66972620370370362</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T16:22:23.952</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.68222166666666662</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T16:29:55.999</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.6874536921296297</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T16:58:20.259</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.70717892361111112</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T17:04:02.415</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.71113906250000003</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T17:18:29.630</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.72117627314814825</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T17:47:21.323</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.74121901620370367</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T17:53:29.866</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.74548456018518516</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T17:53:41.076</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.74561430555555563</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T17:55:06.044</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.74659773148148145</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T18:14:49.151</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.760291099537037</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T18:17:45.738</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.76233493055555546</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T18:29:59.700</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.77082986111111118</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T18:33:21.233</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.77316241898148153</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T19:14:24.673</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.80167445601851861</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T19:17:12.816</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.80362055555555545</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T19:23:36.418</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.80806039351851855</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T19:46:25.908</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.82391097222222232</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T20:07:47.314</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.83874206018518516</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T20:31:37.603</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.85529633101851854</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T20:39:57.770</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.86108530092592594</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T20:50:17.067</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.86825309027777775</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:02:57.827</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.87705818287037041</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:23:05.519</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.891036099537037</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:34:49.572</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.89918486111111118</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:39:05.944</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.90215212962962965</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:39:18.426</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.90229659722222222</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:46:07.769</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.90703436342592603</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T21:57:55.662</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.91522756944444439</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T22:19:11.732</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.92999689814814823</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T22:23:51.376</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.93323351851851843</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T22:27:58.771</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.93609688657407408</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T22:43:30.392</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.94687953703703709</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T22:48:25.834</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.95029900462962968</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T22:53:51.727</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.95407091435185187</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T23:12:56.536</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.96732101851851848</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T23:15:54.109</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.96937626157407408</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T23:17:12.632</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.97028509259259266</Data></Cell>
+   </Row>
+   <Row>
+    <Cell ss:StyleID="s22"><Data ss:Type="DateTime">1899-12-31T23:59:59.999</Data></Cell>
+    <Cell ss:StyleID="s23" ss:Formula="=RC[-1]"><Data ss:Type="Number">0.99999998842592586</Data></Cell>
+   </Row>
+
+
+




More information about the Pkg-perl-cvs-commits mailing list