The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
Changes 011
MANIFEST 038
META.json 44
META.yml 99
README 11
examples/README 42
examples/chart_doughnut.pl 0131
examples/chart_pie.pl 529
examples/gen_examples_pod.pl 12
lib/Excel/Writer/XLSX/Chart/Area.pm 22
lib/Excel/Writer/XLSX/Chart/Bar.pm 22
lib/Excel/Writer/XLSX/Chart/Column.pm 22
lib/Excel/Writer/XLSX/Chart/Doughnut.pm 0305
lib/Excel/Writer/XLSX/Chart/Line.pm 22
lib/Excel/Writer/XLSX/Chart/Pie.pm 541
lib/Excel/Writer/XLSX/Chart/Radar.pm 22
lib/Excel/Writer/XLSX/Chart/Scatter.pm 22
lib/Excel/Writer/XLSX/Chart/Stock.pm 22
lib/Excel/Writer/XLSX/Chart.pm 812
lib/Excel/Writer/XLSX/Chartsheet.pm 11
lib/Excel/Writer/XLSX/Drawing.pm 11
lib/Excel/Writer/XLSX/Examples.pm 170353
lib/Excel/Writer/XLSX/Format.pm 11
lib/Excel/Writer/XLSX/Package/App.pm 11
lib/Excel/Writer/XLSX/Package/Comments.pm 11
lib/Excel/Writer/XLSX/Package/ContentTypes.pm 11
lib/Excel/Writer/XLSX/Package/Core.pm 11
lib/Excel/Writer/XLSX/Package/Packager.pm 11
lib/Excel/Writer/XLSX/Package/Relationships.pm 11
lib/Excel/Writer/XLSX/Package/SharedStrings.pm 11
lib/Excel/Writer/XLSX/Package/Styles.pm 312
lib/Excel/Writer/XLSX/Package/Table.pm 11
lib/Excel/Writer/XLSX/Package/Theme.pm 11
lib/Excel/Writer/XLSX/Package/VML.pm 11
lib/Excel/Writer/XLSX/Package/XMLwriter.pm 11
lib/Excel/Writer/XLSX/Shape.pm 11
lib/Excel/Writer/XLSX/Utility.pm 11
lib/Excel/Writer/XLSX/Workbook.pm 1698
lib/Excel/Writer/XLSX/Worksheet.pm 3470
lib/Excel/Writer/XLSX.pm 1137
t/regression/chart_column09.t 085
t/regression/chart_column10.t 085
t/regression/chart_doughnut01.t 082
t/regression/chart_doughnut02.t 084
t/regression/chart_doughnut03.t 084
t/regression/chart_doughnut04.t 084
t/regression/chart_doughnut05.t 084
t/regression/chart_doughnut06.t 085
t/regression/chart_pie05.t 084
t/regression/default_format01.t 069
t/regression/excel2003_style01.t 063
t/regression/excel2003_style02.t 079
t/regression/excel2003_style03.t 083
t/regression/excel2003_style04.t 065
t/regression/excel2003_style05.t 071
t/regression/excel2003_style06.t 071
t/regression/excel2003_style07.t 071
t/regression/excel2003_style08.t 068
t/regression/xlsx_files/chart_column09.xlsx --
t/regression/xlsx_files/chart_column10.xlsx --
t/regression/xlsx_files/chart_doughnut01.xlsx --
t/regression/xlsx_files/chart_doughnut02.xlsx --
t/regression/xlsx_files/chart_doughnut03.xlsx --
t/regression/xlsx_files/chart_doughnut04.xlsx --
t/regression/xlsx_files/chart_doughnut05.xlsx --
t/regression/xlsx_files/chart_doughnut06.xlsx --
t/regression/xlsx_files/chart_pie05.xlsx --
t/regression/xlsx_files/default_format01.xlsx --
t/regression/xlsx_files/excel2003_style01.xlsx --
t/regression/xlsx_files/excel2003_style02.xlsx --
t/regression/xlsx_files/excel2003_style03.xlsx --
t/regression/xlsx_files/excel2003_style04.xlsx --
t/regression/xlsx_files/excel2003_style05.xlsx --
t/regression/xlsx_files/excel2003_style06.xlsx --
t/regression/xlsx_files/excel2003_style07.xlsx --
t/regression/xlsx_files/excel2003_style08.xlsx --
t/workbook/sub_write_calc_pr.t 247
t/worksheet/sub_convert_date_time_02.t 22
t/worksheet/sub_write_phonetic_pr.t 11
t/worksheet/worksheet_cond_format_10.t 11
t/worksheet/worksheet_cond_format_11.t 11
t/worksheet/worksheet_merge_cells_03.t 11
82 files changed (This is a version diff) 3092635
@@ -5,6 +5,17 @@ Revision history for Perl module Excel::Writer::XLSX.
      ! Bug fix.
 
 
+0.78 2014-09-28
+
+    + Added Doughnut chart with set_rotation() and set_hole_size()
+      methods.
+
+    + Added set_rotation() method to Pie charts.
+
+    + Added set_calc_mode() method to control automatic calculation of
+      formulas when worksheet is opened.
+
+
 0.77 2014-05-06
 
     ! Fix for incorrect chart offsets in insert_chart() and set_size().
@@ -15,6 +15,7 @@ examples/chart_bar.pl
 examples/chart_column.pl
 examples/chart_data_table.pl
 examples/chart_data_tools.pl
+examples/chart_doughnut.pl
 examples/chart_line.pl
 examples/chart_pie.pl
 examples/chart_radar.pl
@@ -104,6 +105,7 @@ lib/Excel/Writer/XLSX/Chart.pm
 lib/Excel/Writer/XLSX/Chart/Area.pm
 lib/Excel/Writer/XLSX/Chart/Bar.pm
 lib/Excel/Writer/XLSX/Chart/Column.pm
+lib/Excel/Writer/XLSX/Chart/Doughnut.pm
 lib/Excel/Writer/XLSX/Chart/Line.pm
 lib/Excel/Writer/XLSX/Chart/Pie.pm
 lib/Excel/Writer/XLSX/Chart/Radar.pm
@@ -389,6 +391,8 @@ t/regression/chart_column05.t
 t/regression/chart_column06.t
 t/regression/chart_column07.t
 t/regression/chart_column08.t
+t/regression/chart_column09.t
+t/regression/chart_column10.t
 t/regression/chart_crossing01.t
 t/regression/chart_crossing02.t
 t/regression/chart_crossing03.t
@@ -397,6 +401,12 @@ t/regression/chart_date01.t
 t/regression/chart_date02.t
 t/regression/chart_date03.t
 t/regression/chart_date04.t
+t/regression/chart_doughnut01.t
+t/regression/chart_doughnut02.t
+t/regression/chart_doughnut03.t
+t/regression/chart_doughnut04.t
+t/regression/chart_doughnut05.t
+t/regression/chart_doughnut06.t
 t/regression/chart_drop_lines01.t
 t/regression/chart_drop_lines02.t
 t/regression/chart_drop_lines03.t
@@ -477,6 +487,7 @@ t/regression/chart_pie01.t
 t/regression/chart_pie02.t
 t/regression/chart_pie03.t
 t/regression/chart_pie04.t
+t/regression/chart_pie05.t
 t/regression/chart_points01.t
 t/regression/chart_points02.t
 t/regression/chart_points03.t
@@ -561,6 +572,7 @@ t/regression/data_validation06.t
 t/regression/date_1904_01.t
 t/regression/date_1904_02.t
 t/regression/date_examples01.t
+t/regression/default_format01.t
 t/regression/default_row01.t
 t/regression/default_row02.t
 t/regression/default_row03.t
@@ -577,6 +589,14 @@ t/regression/escapes05.t
 t/regression/escapes06.t
 t/regression/escapes07.t
 t/regression/escapes08.t
+t/regression/excel2003_style01.t
+t/regression/excel2003_style02.t
+t/regression/excel2003_style03.t
+t/regression/excel2003_style04.t
+t/regression/excel2003_style05.t
+t/regression/excel2003_style06.t
+t/regression/excel2003_style07.t
+t/regression/excel2003_style08.t
 t/regression/filehandle01.t
 t/regression/firstsheet01.t
 t/regression/fit_to_page01.t
@@ -886,6 +906,8 @@ t/regression/xlsx_files/chart_column05.xlsx
 t/regression/xlsx_files/chart_column06.xlsx
 t/regression/xlsx_files/chart_column07.xlsx
 t/regression/xlsx_files/chart_column08.xlsx
+t/regression/xlsx_files/chart_column09.xlsx
+t/regression/xlsx_files/chart_column10.xlsx
 t/regression/xlsx_files/chart_crossing01.xlsx
 t/regression/xlsx_files/chart_crossing02.xlsx
 t/regression/xlsx_files/chart_crossing03.xlsx
@@ -894,6 +916,12 @@ t/regression/xlsx_files/chart_date01.xlsx
 t/regression/xlsx_files/chart_date02.xlsx
 t/regression/xlsx_files/chart_date03.xlsx
 t/regression/xlsx_files/chart_date04.xlsx
+t/regression/xlsx_files/chart_doughnut01.xlsx
+t/regression/xlsx_files/chart_doughnut02.xlsx
+t/regression/xlsx_files/chart_doughnut03.xlsx
+t/regression/xlsx_files/chart_doughnut04.xlsx
+t/regression/xlsx_files/chart_doughnut05.xlsx
+t/regression/xlsx_files/chart_doughnut06.xlsx
 t/regression/xlsx_files/chart_drop_lines01.xlsx
 t/regression/xlsx_files/chart_drop_lines02.xlsx
 t/regression/xlsx_files/chart_drop_lines03.xlsx
@@ -972,6 +1000,7 @@ t/regression/xlsx_files/chart_pie01.xlsx
 t/regression/xlsx_files/chart_pie02.xlsx
 t/regression/xlsx_files/chart_pie03.xlsx
 t/regression/xlsx_files/chart_pie04.xlsx
+t/regression/xlsx_files/chart_pie05.xlsx
 t/regression/xlsx_files/chart_points01.xlsx
 t/regression/xlsx_files/chart_points02.xlsx
 t/regression/xlsx_files/chart_points03.xlsx
@@ -1048,6 +1077,7 @@ t/regression/xlsx_files/data_validation03.xlsx
 t/regression/xlsx_files/date_1904_01.xlsx
 t/regression/xlsx_files/date_1904_02.xlsx
 t/regression/xlsx_files/date_examples01.xlsx
+t/regression/xlsx_files/default_format01.xlsx
 t/regression/xlsx_files/default_row01.xlsx
 t/regression/xlsx_files/default_row02.xlsx
 t/regression/xlsx_files/default_row03.xlsx
@@ -1064,6 +1094,14 @@ t/regression/xlsx_files/escapes05.xlsx
 t/regression/xlsx_files/escapes06.xlsx
 t/regression/xlsx_files/escapes07.xlsx
 t/regression/xlsx_files/escapes08.xlsx
+t/regression/xlsx_files/excel2003_style01.xlsx
+t/regression/xlsx_files/excel2003_style02.xlsx
+t/regression/xlsx_files/excel2003_style03.xlsx
+t/regression/xlsx_files/excel2003_style04.xlsx
+t/regression/xlsx_files/excel2003_style05.xlsx
+t/regression/xlsx_files/excel2003_style06.xlsx
+t/regression/xlsx_files/excel2003_style07.xlsx
+t/regression/xlsx_files/excel2003_style08.xlsx
 t/regression/xlsx_files/filehandle01.xlsx
 t/regression/xlsx_files/firstsheet01.xlsx
 t/regression/xlsx_files/fit_to_pages01.xlsx
@@ -4,7 +4,7 @@
       "John McNamara (jmcnamara@cpan.org)"
    ],
    "dynamic_config" : 1,
-   "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150",
+   "generated_by" : "ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.142060",
    "license" : [
       "perl_5"
    ],
@@ -22,12 +22,12 @@
    "prereqs" : {
       "build" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : 0
+            "ExtUtils::MakeMaker" : "0"
          }
       },
       "configure" : {
          "requires" : {
-            "ExtUtils::MakeMaker" : 0
+            "ExtUtils::MakeMaker" : "0"
          }
       },
       "runtime" : {
@@ -49,5 +49,5 @@
       },
       "x_MailingList" : "http://groups.google.com/group/spreadsheet-writeexcel"
    },
-   "version" : "0.77"
+   "version" : "0.78"
 }
@@ -3,27 +3,27 @@ abstract: 'Create a new file in the Excel 2007+ XLSX format.'
 author:
   - 'John McNamara (jmcnamara@cpan.org)'
 build_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '0'
 configure_requires:
-  ExtUtils::MakeMaker: 0
+  ExtUtils::MakeMaker: '0'
 dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.112150'
+generated_by: 'ExtUtils::MakeMaker version 6.62, CPAN::Meta::Converter version 2.142060'
 license: perl
 meta-spec:
   url: http://module-build.sourceforge.net/META-spec-v1.4.html
-  version: 1.4
+  version: '1.4'
 name: Excel-Writer-XLSX
 no_index:
   directory:
     - t
     - inc
 requires:
-  Archive::Zip: 1.3
-  File::Temp: 0.19
-  IO::File: 1.14
+  Archive::Zip: '1.3'
+  File::Temp: '0.19'
+  IO::File: '1.14'
 resources:
+  MailingList: http://groups.google.com/group/spreadsheet-writeexcel
   bugtracker: http://github.com/jmcnamara/excel-writer-xlsx/issues
   homepage: http://jmcnamara.github.com/excel-writer-xlsx/
   repository: http://github.com/jmcnamara/excel-writer-xlsx
-  x_MailingList: http://groups.google.com/group/spreadsheet-writeexcel
-version: 0.77
+version: '0.78'
@@ -69,7 +69,7 @@ INSTALLATION
 
         Unzip and untar the module as follows:
 
-            tar -zxvf Excel-Writer-XLSX-0.77.tar.gz
+            tar -zxvf Excel-Writer-XLSX-0.78.tar.gz
 
         The module can be installed using the standard Perl procedure:
 
@@ -1,4 +1,4 @@
-The following is a description of the example files that are provided with 
+The following is a description of the example files that are provided with
 Excel::Writer::XLSX. They are intended to demonstrate the different features
 and options of the module.
 
@@ -23,6 +23,7 @@ chart_bar.pl            A demo of bar (vertical histogram) style charts.
 chart_column.pl         A demo of column (histogram) style charts.
 chart_line.pl           A demo of line style charts.
 chart_pie.pl            A demo of pie style charts.
+chart_doughnut.pl       A demo of dougnut style charts.
 chart_radar.pl          A demo of radar style charts.
 chart_scatter.pl        A demo of scatter style charts.
 chart_secondary_axis.pl A demo of a line chart with a secondary axis.
@@ -95,6 +96,3 @@ unicode_cyrillic.pl     Russian:  Cyrillic.
 unicode_koi8r.pl        Russian:  KOI8-R.
 unicode_polish_utf8.pl  Polish :  UTF8.
 unicode_shift_jis.pl    Japanese: Shift JIS.
-
-
-
@@ -0,0 +1,131 @@
+#!/usr/bin/perl
+
+#######################################################################
+#
+# A demo of a Doughnut chart in Excel::Writer::XLSX.
+#
+# The demo also shows how to set segment colours. It is possible to define
+# chart colors for most types of Excel::Writer::XLSX charts via the
+# add_series() method. However, Pie and Doughtnut charts are a special case
+# since each segment is represented as a point so it is necessary to assign
+# formatting to each point in the series.
+#
+# reverse ('(c)'), March 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use strict;
+use warnings;
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( 'chart_doughnut.xlsx' );
+my $worksheet = $workbook->add_worksheet();
+my $bold      = $workbook->add_format( bold => 1 );
+
+# Add the worksheet data that the charts will refer to.
+my $headings = [ 'Category', 'Values' ];
+my $data = [
+    [ 'Glazed', 'Chocolate', 'Cream' ],
+    [ 50,       35,          15      ],
+];
+
+$worksheet->write( 'A1', $headings, $bold );
+$worksheet->write( 'A2', $data );
+
+# Create a new chart object. In this case an embedded chart.
+my $chart1 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+# Configure the series. Note the use of the array ref to define ranges:
+# [ $sheetname, $row_start, $row_end, $col_start, $col_end ].
+# See below for an alternative syntax.
+$chart1->add_series(
+    name       => 'Doughnut sales data',
+    categories => [ 'Sheet1', 1, 3, 0, 0 ],
+    values     => [ 'Sheet1', 1, 3, 1, 1 ],
+);
+
+# Add a title.
+$chart1->set_title( name => 'Popular Doughnut Types' );
+
+# Set an Excel chart style. Colors with white outline and shadow.
+$chart1->set_style( 10 );
+
+# Insert the chart into the worksheet (with an offset).
+$worksheet->insert_chart( 'C2', $chart1, 25, 10 );
+
+
+#
+# Create a Doughnut chart with user defined segment colors.
+#
+
+# Create an example Doughnut chart like above.
+my $chart2 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+# Configure the series and add user defined segment colours.
+$chart2->add_series(
+    name       => 'Doughnut sales data',
+    categories => '=Sheet1!$A$2:$A$4',
+    values     => '=Sheet1!$B$2:$B$4',
+    points     => [
+        { fill => { color => '#FA58D0' } },
+        { fill => { color => '#61210B' } },
+        { fill => { color => '#F5F6CE' } },
+    ],
+);
+
+# Add a title.
+$chart2->set_title( name => 'Doughnut Chart with user defined colors' );
+
+
+# Insert the chart into the worksheet (with an offset).
+$worksheet->insert_chart( 'C18', $chart2, 25, 10 );
+
+
+#
+# Create a Doughnut chart with rotation of the segments.
+#
+
+# Create an example Doughnut chart like above.
+my $chart3 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+# Configure the series and add user defined segment colours.
+$chart3->add_series(
+    name       => 'Doughnut sales data',
+    categories => '=Sheet1!$A$2:$A$4',
+    values     => '=Sheet1!$B$2:$B$4',
+);
+
+# Add a title.
+$chart3->set_title( name => 'Doughnut Chart with segment rotation' );
+
+# Change the angle/rotation of the first segment.
+$chart3->set_rotation(90);
+
+# Insert the chart into the worksheet (with an offset).
+$worksheet->insert_chart( 'C34', $chart3, 25, 10 );
+
+
+#
+# Create a Doughnut chart with user defined hole size.
+#
+
+# Create an example Doughnut chart like above.
+my $chart4 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+# Configure the series and add user defined segment colours.
+$chart4->add_series(
+    name       => 'Doughnut sales data',
+    categories => '=Sheet1!$A$2:$A$4',
+    values     => '=Sheet1!$B$2:$B$4',
+);
+
+# Add a title.
+$chart4->set_title( name => 'Doughnut Chart with user defined hole size' );
+
+# Change the angle/rotation of the first segment.
+$chart4->set_hole_size(33);
+
+# Insert the chart into the worksheet (with an offset).
+$worksheet->insert_chart( 'C50', $chart4, 25, 10 );
+
+
+__END__
@@ -4,11 +4,11 @@
 #
 # A demo of a Pie chart in Excel::Writer::XLSX.
 #
-# The demo also shows how to set segment colours. It is possible to
-# define chart colors for most types of Excel::Writer::XLSX charts
-# via the add_series() method. However, Pie charts are a special case
-# since each segment is represented as a point so it is necessary to
-# assign formatting to each point in the series.
+# The demo also shows how to set segment colours. It is possible to define
+# chart colors for most types of Excel::Writer::XLSX charts via the
+# add_series() method. However, Pie and Doughtnut charts are a special case
+# since each segment is represented as a point so it is necessary to assign
+# formatting to each point in the series.
 #
 # reverse ('(c)'), March 2011, John McNamara, jmcnamara@cpan.org
 #
@@ -80,5 +80,29 @@ $chart2->set_title( name => 'Pie Chart with user defined colors' );
 $worksheet->insert_chart( 'C18', $chart2, 25, 10 );
 
 
+#
+# Create a Pie chart with rotation of the segments.
+#
+
+# Create an example Pie chart like above.
+my $chart3 = $workbook->add_chart( type => 'pie', embedded => 1 );
+
+# Configure the series and add user defined segment colours.
+$chart3->add_series(
+    name       => 'Pie sales data',
+    categories => '=Sheet1!$A$2:$A$4',
+    values     => '=Sheet1!$B$2:$B$4',
+);
+
+# Add a title.
+$chart3->set_title( name => 'Pie Chart with segment rotation' );
+
+# Change the angle/rotation of the first segment.
+$chart3->set_rotation(90);
+
+# Insert the chart into the worksheet (with an offset).
+$worksheet->insert_chart( 'C34', $chart3, 25, 10 );
+
+
 
 __END__
@@ -260,7 +260,7 @@ sub print_image_html {
 
     return unless exists $images{$image};
 
-    my $url    = 'http://jmcnamara.github.com/excel-writer-xlsx/images/examples';
+    my $url    = 'http://jmcnamara.github.io/excel-writer-xlsx/images/examples';
     my $width  = 640;
     my $height = 420;
 
@@ -290,6 +290,7 @@ chart_bar.jpg
 chart_column.jpg
 chart_line.jpg
 chart_pie.jpg
+chart_doughnut.jpg
 chart_radar.jpg
 chart_scatter.jpg
 chart_secondary_axis.jpg
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -242,7 +242,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/area1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/area1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -299,7 +299,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/bar1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/bar1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -281,7 +281,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/column1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/column1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -0,0 +1,305 @@
+package Excel::Writer::XLSX::Chart::Doughnut;
+
+###############################################################################
+#
+# Doughnut - A class for writing Excel Doughnut charts.
+#
+# Used in conjunction with Excel::Writer::XLSX::Chart.
+#
+# See formatting note in Excel::Writer::XLSX::Chart.
+#
+# Copyright 2000-2014, John McNamara, jmcnamara@cpan.org
+#
+# Documentation after __END__
+#
+
+# perltidy with the following options: -mbl=2 -pt=0 -nola
+
+use 5.008002;
+use strict;
+use warnings;
+use Carp;
+use Excel::Writer::XLSX::Chart::Pie;
+
+our @ISA     = qw(Excel::Writer::XLSX::Chart::Pie);
+our $VERSION = '0.78';
+
+
+###############################################################################
+#
+# new()
+#
+#
+sub new {
+
+    my $class = shift;
+    my $self  = Excel::Writer::XLSX::Chart::Pie->new( @_ );
+
+    $self->{_vary_data_color} = 1;
+    $self->{_hole_size}       = 50;
+    $self->{_rotation}        = 0;
+
+    bless $self, $class;
+    return $self;
+}
+
+
+###############################################################################
+#
+# set_hole_size()
+#
+# Set the Doughnut chart hole size.
+#
+sub set_hole_size {
+
+    my $self = shift;
+    my $size = shift;
+
+    return if !defined $size;
+
+    if ( $size >= 10 && $size <= 90 ) {
+        $self->{_hole_size} = $size;
+    }
+    else {
+        carp "Hole size $size outside Excel range: 10 <= size <= 90";
+    }
+}
+
+
+##############################################################################
+#
+# _write_chart_type()
+#
+# Override the virtual superclass method with a chart specific method.
+#
+sub _write_chart_type {
+
+    my $self = shift;
+
+    # Write the c:doughnutChart element.
+    $self->_write_doughnut_chart( @_ );
+}
+
+
+##############################################################################
+#
+# _write_doughnut_chart()
+#
+# Write the <c:doughnutChart> element. Over-ridden method to remove axis_id code
+# since Doughnut charts don't require val and cat axes.
+#
+sub _write_doughnut_chart {
+
+    my $self = shift;
+
+    $self->xml_start_tag( 'c:doughnutChart' );
+
+    # Write the c:varyColors element.
+    $self->_write_vary_colors();
+
+    # Write the series elements.
+    $self->_write_ser( $_ ) for @{ $self->{_series} };
+
+    # Write the c:firstSliceAng element.
+    $self->_write_first_slice_ang();
+
+    # Write the c:holeSize element.
+    $self->_write_hole_size();
+
+    $self->xml_end_tag( 'c:doughnutChart' );
+}
+
+
+##############################################################################
+#
+# _write_hole_size()
+#
+# Write the <c:holeSize> element.
+#
+sub _write_hole_size {
+
+    my $self = shift;
+    my $val  = $self->{_hole_size};
+
+    my @attributes = ( 'val' => $val );
+
+    $self->xml_empty_tag( 'c:holeSize', @attributes );
+}
+
+1;
+
+
+__END__
+
+
+=head1 NAME
+
+Doughnut - A class for writing Excel Doughnut charts.
+
+=head1 SYNOPSIS
+
+To create a simple Excel file with a Doughnut chart using Excel::Writer::XLSX:
+
+    #!/usr/bin/perl
+
+    use strict;
+    use warnings;
+    use Excel::Writer::XLSX;
+
+    my $workbook  = Excel::Writer::XLSX->new( 'chart.xlsx' );
+    my $worksheet = $workbook->add_worksheet();
+
+    my $chart     = $workbook->add_chart( type => 'doughnut' );
+
+    # Configure the chart.
+    $chart->add_series(
+        categories => '=Sheet1!$A$2:$A$7',
+        values     => '=Sheet1!$B$2:$B$7',
+    );
+
+    # Add the worksheet data the chart refers to.
+    my $data = [
+        [ 'Category', 2, 3, 4, 5, 6, 7 ],
+        [ 'Value',    1, 4, 5, 2, 1, 5 ],
+    ];
+
+    $worksheet->write( 'A1', $data );
+
+    __END__
+
+=head1 DESCRIPTION
+
+This module implements Doughnut charts for L<Excel::Writer::XLSX>. The chart object is created via the Workbook C<add_chart()> method:
+
+    my $chart = $workbook->add_chart( type => 'doughnut' );
+
+Once the object is created it can be configured via the following methods that are common to all chart classes:
+
+    $chart->add_series();
+    $chart->set_title();
+
+These methods are explained in detail in L<Excel::Writer::XLSX::Chart>. Class specific methods or settings, if any, are explained below.
+
+=head1 Doughnut Chart Methods
+
+=head2 set_rotation()
+
+The C<set_rotation()> method is used to set the rotation of the first segment of a Pie/Doughnut chart. This has the effect of rotating the entire chart:
+
+    $chart->set_rotation( 90 );
+
+The angle of rotation must be C<< 0 <= rotation <= 360 >>.
+
+
+=head2 set_hole_size()
+
+The C<set_hole_size()> method is used to set the hole size of a Doughnut chart:
+
+    $chart->set_hole_size( 33 );
+
+The the hole size must be a percentage in the range  C<< 10 <= size <= 90 >>.
+
+
+=head2 User defined colors
+
+It is possible to define chart colors for most types of Excel::Writer::XLSX charts via the add_series() method. However, Pie/Doughnut charts are a special case since each segment is represented as a point so it is necessary to assign formatting to each point in the series:
+
+    $chart->add_series(
+        values => '=Sheet1!$A$1:$A$3',
+        points => [
+            { fill => { color => '#FF0000' } },
+            { fill => { color => '#CC0000' } },
+            { fill => { color => '#990000' } },
+        ],
+    );
+
+See the main L<Excel::Writer::XLSX::Chart> documentation for more details.
+
+Doughnut charts support leader lines:
+
+    $chart->add_series(
+        name        => 'Doughnut sales data',
+        categories  => [ 'Sheet1', 1, 3, 0, 0 ],
+        values      => [ 'Sheet1', 1, 3, 1, 1 ],
+        data_labels => {
+            series_name  => 1,
+            percentage   => 1,
+            leader_lines => 1,
+            position     => 'outside_end'
+        },
+    );
+
+Note: Even when leader lines are turned on they aren't automatically visible in Excel or Excel::Writer::XLSX. Due to an Excel limitation (or design) leader lines only appear if the data label is moved manually or if the data labels are very close and need to be adjusted automatically.
+
+=head2 Unsupported Methods
+
+A Doughnut chart doesn't have an X or Y axis so the following common chart methods are ignored.
+
+    $chart->set_x_axis();
+    $chart->set_y_axis();
+
+=head1 EXAMPLE
+
+Here is a complete example that demonstrates most of the available features when creating a chart.
+
+    #!/usr/bin/perl
+
+    use strict;
+    use warnings;
+    use Excel::Writer::XLSX;
+
+    my $workbook  = Excel::Writer::XLSX->new( 'chart_doughnut.xlsx' );
+    my $worksheet = $workbook->add_worksheet();
+    my $bold      = $workbook->add_format( bold => 1 );
+
+    # Add the worksheet data that the charts will refer to.
+    my $headings = [ 'Category', 'Values' ];
+    my $data = [
+        [ 'Glazed', 'Chocolate', 'Cream' ],
+        [ 50,       35,          15      ],
+    ];
+
+    $worksheet->write( 'A1', $headings, $bold );
+    $worksheet->write( 'A2', $data );
+
+    # Create a new chart object. In this case an embedded chart.
+    my $chart = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+    # Configure the series. Note the use of the array ref to define ranges:
+    # [ $sheetname, $row_start, $row_end, $col_start, $col_end ].
+    $chart->add_series(
+        name       => 'Doughnut sales data',
+        categories => [ 'Sheet1', 1, 3, 0, 0 ],
+        values     => [ 'Sheet1', 1, 3, 1, 1 ],
+    );
+
+    # Add a title.
+    $chart->set_title( name => 'Popular Doughnut Types' );
+
+    # Set an Excel chart style. Colors with white outline and shadow.
+    $chart->set_style( 10 );
+
+    # Insert the chart into the worksheet (with an offset).
+    $worksheet->insert_chart( 'C2', $chart, 25, 10 );
+
+    __END__
+
+
+=begin html
+
+<p>This will produce a chart that looks like this:</p>
+
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/doughnut1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+
+=end html
+
+
+=head1 AUTHOR
+
+John McNamara jmcnamara@cpan.org
+
+=head1 COPYRIGHT
+
+Copyright MM-MMXIIII, John McNamara.
+
+All Rights Reserved. This module is free software. It may be used, redistributed and/or modified under the same terms as Perl itself.
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -257,7 +257,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/line1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/line1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -36,12 +36,35 @@ sub new {
     my $self  = Excel::Writer::XLSX::Chart->new( @_ );
 
     $self->{_vary_data_color} = 1;
+    $self->{_rotation}        = 0;
 
     bless $self, $class;
     return $self;
 }
 
 
+###############################################################################
+#
+# set_rotation()
+#
+# Set the Pie/Doughnut chart rotation: the angle of the first slice.
+#
+sub set_rotation {
+
+    my $self     = shift;
+    my $rotation = shift;
+
+    return if !defined $rotation;
+
+    if ( $rotation >= 0 && $rotation <= 360 ) {
+        $self->{_rotation} = $rotation;
+    }
+    else {
+        carp "Chart rotation $rotation outside range: 0 <= rotation <= 360";
+    }
+}
+
+
 ##############################################################################
 #
 # _write_chart_type()
@@ -88,7 +111,7 @@ sub _write_pie_chart {
 # _write_plot_area().
 #
 # Over-ridden method to remove the cat_axis() and val_axis() code since
-# Pie charts don't require those axes.
+# Pie/Doughnut charts don't require those axes.
 #
 # Write the <c:plotArea> element.
 #
@@ -275,7 +298,7 @@ sub _write_vary_colors {
 sub _write_first_slice_ang {
 
     my $self = shift;
-    my $val  = 0;
+    my $val  = $self->{_rotation};
 
     my @attributes = ( 'val' => $val );
 
@@ -338,7 +361,18 @@ These methods are explained in detail in L<Excel::Writer::XLSX::Chart>. Class sp
 
 =head1 Pie Chart Methods
 
-It is possible to define chart colors for most types of Excel::Writer::XLSX charts via the add_series() method. However, Pie charts are a special case since each segment is represented as a point so it is necessary to assign formatting to each point in the series:
+=head2 set_rotation()
+
+The C<set_rotation()> method is used to set the rotation of the first segment of a Pie/Doughnut chart. This has the effect of rotating the entire chart:
+
+    $chart->set_rotation( 90 );
+
+The angle of rotation must be C<< 0 <= rotation <= 360 >>.
+
+
+=head2 User defined colors
+
+It is possible to define chart colors for most types of Excel::Writer::XLSX charts via the add_series() method. However, Pie/Doughnut charts are a special case since each segment is represented as a point so it is necessary to assign formatting to each point in the series:
 
     $chart->add_series(
         values => '=Sheet1!$A$1:$A$3',
@@ -367,6 +401,8 @@ Pie charts support leader lines:
 
 Note: Even when leader lines are turned on they aren't automatically visible in Excel or Excel::Writer::XLSX. Due to an Excel limitation (or design) leader lines only appear if the data label is moved manually or if the data labels are very close and need to be adjusted automatically.
 
+=head2 Unsupported Methods
+
 A Pie chart doesn't have an X or Y axis so the following common chart methods are ignored.
 
     $chart->set_x_axis();
@@ -423,7 +459,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/pie1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/pie1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -255,7 +255,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/radar1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/radar1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -526,7 +526,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/scatter1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/scatter1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -22,7 +22,7 @@ use Carp;
 use Excel::Writer::XLSX::Chart;
 
 our @ISA     = qw(Excel::Writer::XLSX::Chart);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -288,7 +288,7 @@ Here is a complete example that demonstrates most of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/stock1.jpg" width="483" height="291" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/stock1.jpg" width="483" height="291" alt="Chart example." /></center></p>
 
 =end html
 
@@ -26,7 +26,7 @@ use Excel::Writer::XLSX::Utility qw(xl_cell_to_rowcol
   xl_range_formula );
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -4018,7 +4018,7 @@ sub _write_sp_pr {
 
     $self->xml_start_tag( 'c:spPr' );
 
-    # Write the fill elements for solid charts such as pie and bar.
+    # Write the fill elements for solid charts such as pie/doughnut and bar.
     if ( $series->{_fill}->{_defined} ) {
 
         if ( $series->{_fill}->{none} ) {
@@ -5355,6 +5355,10 @@ Creates a Line style chart. See L<Excel::Writer::XLSX::Chart::Line>.
 
 Creates a Pie style chart. See L<Excel::Writer::XLSX::Chart::Pie>.
 
+=item * C<doughnut>
+
+Creates a Doughnut style chart. See L<Excel::Writer::XLSX::Chart::Doughnut>.
+
 =item * C<scatter>
 
 Creates a Scatter style chart. See L<Excel::Writer::XLSX::Chart::Scatter>.
@@ -6229,7 +6233,7 @@ Several of these properties can be set in one go:
         },
     );
 
-Trendlines cannot be added to series in a stacked chart or pie chart, radar chart or (when implemented) to 3D, surface, or doughnut charts.
+Trendlines cannot be added to series in a stacked chart or pie chart, radar chart, doughtnut or (when implemented) to 3D, or surface charts.
 
 =head2 Error Bars
 
@@ -6375,7 +6379,7 @@ Valid positions are:
     outside_end     # Pie chart mainly.
     best_fit        # Pie chart mainly.
 
-The C<percentage> property is used to turn on the display of data labels as a I<Percentage> for a series. It is mainly used for pie charts.
+The C<percentage> property is used to turn on the display of data labels as a I<Percentage> for a series. It is mainly used for pie and doughnut charts.
 
     $chart->add_series(
         values      => '=Sheet1!$B$1:$B$5',
@@ -6393,7 +6397,7 @@ Note: Even when leader lines are turned on they aren't automatically visible in
 
 =head2 Points
 
-In general formatting is applied to an entire series in a chart. However, it is occasionally required to format individual points in a series. In particular this is required for Pie charts where each segment is represented by a point.
+In general formatting is applied to an entire series in a chart. However, it is occasionally required to format individual points in a series. In particular this is required for Pie and Doughnut charts where each segment is represented by a point.
 
 In these cases it is possible to use the C<points> property of C<add_series()>:
 
@@ -6736,7 +6740,7 @@ The layout units must be a float in the range C<0 < x <= 1> and are expressed as
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/layout.png" width="826" height="423" alt="Chart object layout." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/layout.png" width="826" height="423" alt="Chart object layout." /></center></p>
 
 =end html
 
@@ -6840,7 +6844,7 @@ Here is a complete example that demonstrates some of the available features when
 
 <p>This will produce a chart that looks like this:</p>
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/area1.jpg" width="527" height="320" alt="Chart example." /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/area1.jpg" width="527" height="320" alt="Chart example." /></center></p>
 
 =end html
 
@@ -6956,7 +6960,7 @@ Features that are on the TODO list and will be added are:
 
 =item * 3D charts.
 
-=item * Additional chart types such as Bubble or Doughnut.
+=item * Additional chart types.
 
 =back
 
@@ -20,7 +20,7 @@ use Exporter;
 use Excel::Writer::XLSX::Worksheet;
 
 our @ISA     = qw(Excel::Writer::XLSX::Worksheet);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -21,7 +21,7 @@ use Excel::Writer::XLSX::Package::XMLwriter;
 use Excel::Writer::XLSX::Worksheet;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -17,7 +17,7 @@ package Excel::Writer::XLSX::Examples;
 use strict;
 use warnings;
 
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 1;
 
@@ -41,7 +41,7 @@ program that is also included in the examples directory.
 
 =head1 Example programs
 
-The following is a list of the 82 example programs that are included in the Excel::Writer::XLSX distribution.
+The following is a list of the 83 example programs that are included in the Excel::Writer::XLSX distribution.
 
 =over
 
@@ -73,6 +73,8 @@ The following is a list of the 82 example programs that are included in the Exce
 
 =item * L<Example: chart_pie.pl> A demo of pie style charts.
 
+=item * L<Example: chart_doughnut.pl> A demo of dougnut style charts.
+
 =item * L<Example: chart_radar.pl> A demo of radar style charts.
 
 =item * L<Example: chart_scatter.pl> A demo of scatter style charts.
@@ -222,7 +224,7 @@ write text and numbers to an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/a_simple.jpg" width="640" height="420" alt="Output from a_simple.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/a_simple.jpg" width="640" height="420" alt="Output from a_simple.pl" /></center></p>
 
 =end html
 
@@ -276,7 +278,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/a_simple.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/a_simple.pl>
 
 =head2 Example: bug_report.pl
 
@@ -426,7 +428,7 @@ Run this program and read the output from the command line.
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/bug_report.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/bug_report.pl>
 
 =head2 Example: demo.pl
 
@@ -441,7 +443,7 @@ L<http://freshmeat.net/projects/writeexcel/>
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/demo.jpg" width="640" height="420" alt="Output from demo.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/demo.jpg" width="640" height="420" alt="Output from demo.pl" /></center></p>
 
 =end html
 
@@ -567,7 +569,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/demo.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/demo.pl>
 
 =head2 Example: formats.pl
 
@@ -583,7 +585,7 @@ in the various formatting possibilities.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/formats.jpg" width="640" height="420" alt="Output from formats.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/formats.jpg" width="640" height="420" alt="Output from formats.pl" /></center></p>
 
 =end html
 
@@ -1105,7 +1107,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/formats.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/formats.pl>
 
 =head2 Example: regions.pl
 
@@ -1118,7 +1120,7 @@ Excel workbook with multiple worksheets.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/regions.jpg" width="640" height="420" alt="Output from regions.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/regions.jpg" width="640" height="420" alt="Output from regions.pl" /></center></p>
 
 =end html
 
@@ -1172,7 +1174,7 @@ Source code for this example:
     $south->set_selection( 0, 1 );
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/regions.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/regions.pl>
 
 =head2 Example: stats.pl
 
@@ -1185,7 +1187,7 @@ module.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/stats.jpg" width="640" height="420" alt="Output from stats.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/stats.jpg" width="640" height="420" alt="Output from stats.pl" /></center></p>
 
 =end html
 
@@ -1263,7 +1265,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/stats.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/stats.pl>
 
 =head2 Example: autofilter.pl
 
@@ -1279,7 +1281,7 @@ simple criteria so that some data is shown and some is hidden.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/autofilter.jpg" width="640" height="420" alt="Output from autofilter.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/autofilter.jpg" width="640" height="420" alt="Output from autofilter.pl" /></center></p>
 
 =end html
 
@@ -1563,7 +1565,7 @@ Source code for this example:
     East      Grape     6000      February
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/autofilter.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/autofilter.pl>
 
 =head2 Example: array_formula.pl
 
@@ -1576,7 +1578,7 @@ array formulas.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/array_formula.jpg" width="640" height="420" alt="Output from array_formula.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/array_formula.jpg" width="640" height="420" alt="Output from array_formula.pl" /></center></p>
 
 =end html
 
@@ -1618,7 +1620,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/array_formula.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/array_formula.pl>
 
 =head2 Example: cgi.pl
 
@@ -1693,7 +1695,7 @@ that line as shown below.
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/cgi.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/cgi.pl>
 
 =head2 Example: chart_area.pl
 
@@ -1705,7 +1707,7 @@ A demo of an Area chart in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_area.jpg" width="640" height="420" alt="Output from chart_area.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_area.jpg" width="640" height="420" alt="Output from chart_area.pl" /></center></p>
 
 =end html
 
@@ -1843,7 +1845,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_area.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_area.pl>
 
 =head2 Example: chart_bar.pl
 
@@ -1855,7 +1857,7 @@ A demo of an Bar chart in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_bar.jpg" width="640" height="420" alt="Output from chart_bar.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_bar.jpg" width="640" height="420" alt="Output from chart_bar.pl" /></center></p>
 
 =end html
 
@@ -1993,7 +1995,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_bar.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_bar.pl>
 
 =head2 Example: chart_column.pl
 
@@ -2005,7 +2007,7 @@ A demo of an Column chart in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_column.jpg" width="640" height="420" alt="Output from chart_column.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_column.jpg" width="640" height="420" alt="Output from chart_column.pl" /></center></p>
 
 =end html
 
@@ -2143,7 +2145,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_column.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_column.pl>
 
 =head2 Example: chart_line.pl
 
@@ -2155,7 +2157,7 @@ A demo of a Line chart in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_line.jpg" width="640" height="420" alt="Output from chart_line.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_line.jpg" width="640" height="420" alt="Output from chart_line.pl" /></center></p>
 
 =end html
 
@@ -2222,7 +2224,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_line.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_line.pl>
 
 =head2 Example: chart_pie.pl
 
@@ -2230,17 +2232,17 @@ Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-X
 
 A demo of a Pie chart in Excel::Writer::XLSX.
 
-The demo also shows how to set segment colours. It is possible to
-define chart colors for most types of Excel::Writer::XLSX charts
-via the add_series() method. However, Pie charts are a special case
-since each segment is represented as a point so it is necessary to
-assign formatting to each point in the series.
+The demo also shows how to set segment colours. It is possible to define
+chart colors for most types of Excel::Writer::XLSX charts via the
+add_series() method. However, Pie and Doughtnut charts are a special case
+since each segment is represented as a point so it is necessary to assign
+formatting to each point in the series.
 
 
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_pie.jpg" width="640" height="420" alt="Output from chart_pie.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_pie.jpg" width="640" height="420" alt="Output from chart_pie.pl" /></center></p>
 
 =end html
 
@@ -2252,11 +2254,11 @@ Source code for this example:
     #
     # A demo of a Pie chart in Excel::Writer::XLSX.
     #
-    # The demo also shows how to set segment colours. It is possible to
-    # define chart colors for most types of Excel::Writer::XLSX charts
-    # via the add_series() method. However, Pie charts are a special case
-    # since each segment is represented as a point so it is necessary to
-    # assign formatting to each point in the series.
+    # The demo also shows how to set segment colours. It is possible to define
+    # chart colors for most types of Excel::Writer::XLSX charts via the
+    # add_series() method. However, Pie and Doughtnut charts are a special case
+    # since each segment is represented as a point so it is necessary to assign
+    # formatting to each point in the series.
     #
     # reverse ('(c)'), March 2011, John McNamara, jmcnamara@cpan.org
     #
@@ -2328,11 +2330,192 @@ Source code for this example:
     $worksheet->insert_chart( 'C18', $chart2, 25, 10 );
     
     
+    #
+    # Create a Pie chart with rotation of the segments.
+    #
+    
+    # Create an example Pie chart like above.
+    my $chart3 = $workbook->add_chart( type => 'pie', embedded => 1 );
+    
+    # Configure the series and add user defined segment colours.
+    $chart3->add_series(
+        name       => 'Pie sales data',
+        categories => '=Sheet1!$A$2:$A$4',
+        values     => '=Sheet1!$B$2:$B$4',
+    );
+    
+    # Add a title.
+    $chart3->set_title( name => 'Pie Chart with segment rotation' );
+    
+    # Change the angle/rotation of the first segment.
+    $chart3->set_rotation(90);
+    
+    # Insert the chart into the worksheet (with an offset).
+    $worksheet->insert_chart( 'C34', $chart3, 25, 10 );
+    
+    
+    
+    __END__
+
+
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_pie.pl>
+
+=head2 Example: chart_doughnut.pl
+
+
+
+A demo of a Doughnut chart in Excel::Writer::XLSX.
+
+The demo also shows how to set segment colours. It is possible to define
+chart colors for most types of Excel::Writer::XLSX charts via the
+add_series() method. However, Pie and Doughtnut charts are a special case
+since each segment is represented as a point so it is necessary to assign
+formatting to each point in the series.
+
+
+
+=begin html
+
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_doughnut.jpg" width="640" height="420" alt="Output from chart_doughnut.pl" /></center></p>
+
+=end html
+
+Source code for this example:
+
+    #!/usr/bin/perl
+    
+    #######################################################################
+    #
+    # A demo of a Doughnut chart in Excel::Writer::XLSX.
+    #
+    # The demo also shows how to set segment colours. It is possible to define
+    # chart colors for most types of Excel::Writer::XLSX charts via the
+    # add_series() method. However, Pie and Doughtnut charts are a special case
+    # since each segment is represented as a point so it is necessary to assign
+    # formatting to each point in the series.
+    #
+    # reverse ('(c)'), March 2011, John McNamara, jmcnamara@cpan.org
+    #
+    
+    use strict;
+    use warnings;
+    use Excel::Writer::XLSX;
+    
+    my $workbook  = Excel::Writer::XLSX->new( 'chart_doughnut.xlsx' );
+    my $worksheet = $workbook->add_worksheet();
+    my $bold      = $workbook->add_format( bold => 1 );
+    
+    # Add the worksheet data that the charts will refer to.
+    my $headings = [ 'Category', 'Values' ];
+    my $data = [
+        [ 'Glazed', 'Chocolate', 'Cream' ],
+        [ 50,       35,          15      ],
+    ];
+    
+    $worksheet->write( 'A1', $headings, $bold );
+    $worksheet->write( 'A2', $data );
+    
+    # Create a new chart object. In this case an embedded chart.
+    my $chart1 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+    
+    # Configure the series. Note the use of the array ref to define ranges:
+    # [ $sheetname, $row_start, $row_end, $col_start, $col_end ].
+    # See below for an alternative syntax.
+    $chart1->add_series(
+        name       => 'Doughnut sales data',
+        categories => [ 'Sheet1', 1, 3, 0, 0 ],
+        values     => [ 'Sheet1', 1, 3, 1, 1 ],
+    );
+    
+    # Add a title.
+    $chart1->set_title( name => 'Popular Doughnut Types' );
+    
+    # Set an Excel chart style. Colors with white outline and shadow.
+    $chart1->set_style( 10 );
+    
+    # Insert the chart into the worksheet (with an offset).
+    $worksheet->insert_chart( 'C2', $chart1, 25, 10 );
+    
+    
+    #
+    # Create a Doughnut chart with user defined segment colors.
+    #
+    
+    # Create an example Doughnut chart like above.
+    my $chart2 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+    
+    # Configure the series and add user defined segment colours.
+    $chart2->add_series(
+        name       => 'Doughnut sales data',
+        categories => '=Sheet1!$A$2:$A$4',
+        values     => '=Sheet1!$B$2:$B$4',
+        points     => [
+            { fill => { color => '#FA58D0' } },
+            { fill => { color => '#61210B' } },
+            { fill => { color => '#F5F6CE' } },
+        ],
+    );
+    
+    # Add a title.
+    $chart2->set_title( name => 'Doughnut Chart with user defined colors' );
+    
+    
+    # Insert the chart into the worksheet (with an offset).
+    $worksheet->insert_chart( 'C18', $chart2, 25, 10 );
+    
+    
+    #
+    # Create a Doughnut chart with rotation of the segments.
+    #
+    
+    # Create an example Doughnut chart like above.
+    my $chart3 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+    
+    # Configure the series and add user defined segment colours.
+    $chart3->add_series(
+        name       => 'Doughnut sales data',
+        categories => '=Sheet1!$A$2:$A$4',
+        values     => '=Sheet1!$B$2:$B$4',
+    );
+    
+    # Add a title.
+    $chart3->set_title( name => 'Doughnut Chart with segment rotation' );
+    
+    # Change the angle/rotation of the first segment.
+    $chart3->set_rotation(90);
+    
+    # Insert the chart into the worksheet (with an offset).
+    $worksheet->insert_chart( 'C34', $chart3, 25, 10 );
+    
+    
+    #
+    # Create a Doughnut chart with user defined hole size.
+    #
+    
+    # Create an example Doughnut chart like above.
+    my $chart4 = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+    
+    # Configure the series and add user defined segment colours.
+    $chart4->add_series(
+        name       => 'Doughnut sales data',
+        categories => '=Sheet1!$A$2:$A$4',
+        values     => '=Sheet1!$B$2:$B$4',
+    );
+    
+    # Add a title.
+    $chart4->set_title( name => 'Doughnut Chart with user defined hole size' );
+    
+    # Change the angle/rotation of the first segment.
+    $chart4->set_hole_size(33);
+    
+    # Insert the chart into the worksheet (with an offset).
+    $worksheet->insert_chart( 'C50', $chart4, 25, 10 );
+    
     
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_pie.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_doughnut.pl>
 
 =head2 Example: chart_radar.pl
 
@@ -2344,7 +2527,7 @@ A demo of an Radar chart in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_radar.jpg" width="640" height="420" alt="Output from chart_radar.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_radar.jpg" width="640" height="420" alt="Output from chart_radar.pl" /></center></p>
 
 =end html
 
@@ -2482,7 +2665,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_radar.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_radar.pl>
 
 =head2 Example: chart_scatter.pl
 
@@ -2497,7 +2680,7 @@ more details.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_scatter.jpg" width="640" height="420" alt="Output from chart_scatter.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_scatter.jpg" width="640" height="420" alt="Output from chart_scatter.pl" /></center></p>
 
 =end html
 
@@ -2710,7 +2893,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_scatter.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_scatter.pl>
 
 =head2 Example: chart_secondary_axis.pl
 
@@ -2722,7 +2905,7 @@ A demo of a Line chart with a secondary axis in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_secondary_axis.jpg" width="640" height="420" alt="Output from chart_secondary_axis.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_secondary_axis.jpg" width="640" height="420" alt="Output from chart_secondary_axis.pl" /></center></p>
 
 =end html
 
@@ -2786,7 +2969,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_secondary_axis.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_secondary_axis.pl>
 
 =head2 Example: chart_stock.pl
 
@@ -2798,7 +2981,7 @@ A demo of a Stock chart in Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_stock.jpg" width="640" height="420" alt="Output from chart_stock.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_stock.jpg" width="640" height="420" alt="Output from chart_stock.pl" /></center></p>
 
 =end html
 
@@ -2875,7 +3058,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_stock.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_stock.pl>
 
 =head2 Example: chart_data_table.pl
 
@@ -2888,7 +3071,7 @@ Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_data_table.jpg" width="640" height="420" alt="Output from chart_data_table.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_data_table.jpg" width="640" height="420" alt="Output from chart_data_table.pl" /></center></p>
 
 =end html
 
@@ -2991,7 +3174,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_data_table.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_data_table.pl>
 
 =head2 Example: chart_data_tools.pl
 
@@ -3007,7 +3190,7 @@ High-Low Lines and Up-Down Bars.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/chart_data_tools.jpg" width="640" height="420" alt="Output from chart_data_tools.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/chart_data_tools.jpg" width="640" height="420" alt="Output from chart_data_tools.pl" /></center></p>
 
 =end html
 
@@ -3229,7 +3412,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/chart_data_tools.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/chart_data_tools.pl>
 
 =head2 Example: colors.pl
 
@@ -3245,7 +3428,7 @@ built-in palette values with a more suitable colour. See the main docs.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/colors.jpg" width="640" height="420" alt="Output from colors.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/colors.jpg" width="640" height="420" alt="Output from colors.pl" /></center></p>
 
 =end html
 
@@ -3361,7 +3544,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/colors.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/colors.pl>
 
 =head2 Example: comments1.pl
 
@@ -3378,7 +3561,7 @@ For more advanced comment options see comments2.pl.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/comments1.jpg" width="640" height="420" alt="Output from comments1.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/comments1.jpg" width="640" height="420" alt="Output from comments1.pl" /></center></p>
 
 =end html
 
@@ -3412,7 +3595,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/comments1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/comments1.pl>
 
 =head2 Example: comments2.pl
 
@@ -3429,7 +3612,7 @@ Each of the worksheets demonstrates different features of cell comments.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/comments2.jpg" width="640" height="420" alt="Output from comments2.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/comments2.jpg" width="640" height="420" alt="Output from comments2.pl" /></center></p>
 
 =end html
 
@@ -3784,7 +3967,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/comments2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/comments2.pl>
 
 =head2 Example: conditional_format.pl
 
@@ -3799,7 +3982,7 @@ cells based on certain criteria.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/conditional_format.jpg" width="640" height="420" alt="Output from conditional_format.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/conditional_format.jpg" width="640" height="420" alt="Output from conditional_format.pl" /></center></p>
 
 =end html
 
@@ -4127,7 +4310,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/conditional_format.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/conditional_format.pl>
 
 =head2 Example: data_validate.pl
 
@@ -4144,7 +4327,7 @@ also allows you to restrict input to values in a drop down list.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/data_validate.jpg" width="640" height="420" alt="Output from data_validate.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/data_validate.jpg" width="640" height="420" alt="Output from data_validate.pl" /></center></p>
 
 =end html
 
@@ -4464,7 +4647,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/data_validate.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/data_validate.pl>
 
 =head2 Example: date_time.pl
 
@@ -4477,7 +4660,7 @@ write_date_time() Worksheet method.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/date_time.jpg" width="640" height="420" alt="Output from date_time.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/date_time.jpg" width="640" height="420" alt="Output from date_time.pl" /></center></p>
 
 =end html
 
@@ -4576,7 +4759,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/date_time.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/date_time.pl>
 
 =head2 Example: defined_name.pl
 
@@ -4591,7 +4774,7 @@ a single cell or a range of cells in a workbook.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/defined_name.jpg" width="640" height="420" alt="Output from defined_name.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/defined_name.jpg" width="640" height="420" alt="Output from defined_name.pl" /></center></p>
 
 =end html
 
@@ -4637,7 +4820,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/defined_name.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/defined_name.pl>
 
 =head2 Example: diag_border.pl
 
@@ -4650,7 +4833,7 @@ border with Excel::Writer::XLSX
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/diag_border.jpg" width="640" height="420" alt="Output from diag_border.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/diag_border.jpg" width="640" height="420" alt="Output from diag_border.pl" /></center></p>
 
 =end html
 
@@ -4697,7 +4880,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/diag_border.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/diag_border.pl>
 
 =head2 Example: filehandle.pl
 
@@ -4710,7 +4893,7 @@ filehandles.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/filehandle.jpg" width="640" height="420" alt="Output from filehandle.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/filehandle.jpg" width="640" height="420" alt="Output from filehandle.pl" /></center></p>
 
 =end html
 
@@ -4821,7 +5004,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/filehandle.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/filehandle.pl>
 
 =head2 Example: headers.pl
 
@@ -4861,7 +5044,7 @@ See the main Excel::Writer::XLSX documentation for more information.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/headers.jpg" width="640" height="420" alt="Output from headers.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/headers.jpg" width="640" height="420" alt="Output from headers.pl" /></center></p>
 
 =end html
 
@@ -4987,7 +5170,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/headers.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/headers.pl>
 
 =head2 Example: hide_row_col.pl
 
@@ -5001,7 +5184,7 @@ Excel uses an optimisation to hide all rows that don't have data.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/hide_row_col.jpg" width="640" height="420" alt="Output from hide_row_col.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/hide_row_col.jpg" width="640" height="420" alt="Output from hide_row_col.pl" /></center></p>
 
 =end html
 
@@ -5047,7 +5230,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/hide_row_col.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/hide_row_col.pl>
 
 =head2 Example: hide_sheet.pl
 
@@ -5059,7 +5242,7 @@ Example of how to hide a worksheet with Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/hide_sheet.jpg" width="640" height="420" alt="Output from hide_sheet.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/hide_sheet.jpg" width="640" height="420" alt="Output from hide_sheet.pl" /></center></p>
 
 =end html
 
@@ -5098,7 +5281,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/hide_sheet.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/hide_sheet.pl>
 
 =head2 Example: hyperlink1.pl
 
@@ -5112,7 +5295,7 @@ See also hyperlink2.pl for worksheet URL examples.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/hyperlink1.jpg" width="640" height="420" alt="Output from hyperlink1.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/hyperlink1.jpg" width="640" height="420" alt="Output from hyperlink1.pl" /></center></p>
 
 =end html
 
@@ -5177,7 +5360,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/hyperlink1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/hyperlink1.pl>
 
 =head2 Example: hyperlink2.pl
 
@@ -5346,7 +5529,7 @@ See also hyperlink1.pl for web URL examples.
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/hyperlink2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/hyperlink2.pl>
 
 =head2 Example: indent.pl
 
@@ -5360,7 +5543,7 @@ This program demonstrates the indentation cell format.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/indent.jpg" width="640" height="420" alt="Output from indent.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/indent.jpg" width="640" height="420" alt="Output from indent.pl" /></center></p>
 
 =end html
 
@@ -5397,7 +5580,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/indent.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/indent.pl>
 
 =head2 Example: macros.pl
 
@@ -5415,7 +5598,7 @@ An embedded macro is connected to a form button on the worksheet.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/macros.jpg" width="640" height="420" alt="Output from macros.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/macros.jpg" width="640" height="420" alt="Output from macros.pl" /></center></p>
 
 =end html
 
@@ -5467,7 +5650,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/macros.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/macros.pl>
 
 =head2 Example: merge1.pl
 
@@ -5484,7 +5667,7 @@ See the merge3.pl - merge6.pl programs.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/merge1.jpg" width="640" height="420" alt="Output from merge1.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/merge1.jpg" width="640" height="420" alt="Output from merge1.pl" /></center></p>
 
 =end html
 
@@ -5529,7 +5712,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/merge1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/merge1.pl>
 
 =head2 Example: merge2.pl
 
@@ -5546,7 +5729,7 @@ See the merge3.pl - merge6.pl programs.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/merge2.jpg" width="640" height="420" alt="Output from merge2.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/merge2.jpg" width="640" height="420" alt="Output from merge2.pl" /></center></p>
 
 =end html
 
@@ -5600,7 +5783,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/merge2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/merge2.pl>
 
 =head2 Example: merge3.pl
 
@@ -5613,7 +5796,7 @@ merged cell.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/merge3.jpg" width="640" height="420" alt="Output from merge3.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/merge3.jpg" width="640" height="420" alt="Output from merge3.pl" /></center></p>
 
 =end html
 
@@ -5665,7 +5848,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/merge3.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/merge3.pl>
 
 =head2 Example: merge4.pl
 
@@ -5678,7 +5861,7 @@ method with complex formatting.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/merge4.jpg" width="640" height="420" alt="Output from merge4.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/merge4.jpg" width="640" height="420" alt="Output from merge4.pl" /></center></p>
 
 =end html
 
@@ -5774,7 +5957,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/merge4.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/merge4.pl>
 
 =head2 Example: merge5.pl
 
@@ -5788,7 +5971,7 @@ method with complex formatting and rotation.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/merge5.jpg" width="640" height="420" alt="Output from merge5.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/merge5.jpg" width="640" height="420" alt="Output from merge5.pl" /></center></p>
 
 =end html
 
@@ -5871,7 +6054,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/merge5.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/merge5.pl>
 
 =head2 Example: merge6.pl
 
@@ -5885,7 +6068,7 @@ method with Unicode strings.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/merge6.jpg" width="640" height="420" alt="Output from merge6.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/merge6.jpg" width="640" height="420" alt="Output from merge6.pl" /></center></p>
 
 =end html
 
@@ -5945,7 +6128,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/merge6.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/merge6.pl>
 
 =head2 Example: mod_perl1.pl
 
@@ -6070,7 +6253,7 @@ The PerlHandler name above and the package name below *have* to match.
     1;
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/mod_perl1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/mod_perl1.pl>
 
 =head2 Example: mod_perl2.pl
 
@@ -6198,7 +6381,7 @@ The PerlResponseHandler must match the package name below.
     1;
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/mod_perl2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/mod_perl2.pl>
 
 =head2 Example: outline.pl
 
@@ -6265,7 +6448,7 @@ See the main Excel::Writer::XLSX documentation for more information.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/outline.jpg" width="640" height="420" alt="Output from outline.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/outline.jpg" width="640" height="420" alt="Output from outline.pl" /></center></p>
 
 =end html
 
@@ -6526,7 +6709,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/outline.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/outline.pl>
 
 =head2 Example: outline_collapsed.pl
 
@@ -6542,7 +6725,7 @@ outlines.pl example program for more general examples.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/outline_collapsed.jpg" width="640" height="420" alt="Output from outline_collapsed.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/outline_collapsed.jpg" width="640" height="420" alt="Output from outline_collapsed.pl" /></center></p>
 
 =end html
 
@@ -6762,7 +6945,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/outline_collapsed.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/outline_collapsed.pl>
 
 =head2 Example: panes.pl
 
@@ -6774,7 +6957,7 @@ Example of using the Excel::Writer::XLSX module to create worksheet panes.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/panes.jpg" width="640" height="420" alt="Output from panes.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/panes.jpg" width="640" height="420" alt="Output from panes.pl" /></center></p>
 
 =end html
 
@@ -6915,7 +7098,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/panes.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/panes.pl>
 
 =head2 Example: properties.pl
 
@@ -6927,7 +7110,7 @@ An example of adding document properties to a Excel::Writer::XLSX file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/properties.jpg" width="640" height="420" alt="Output from properties.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/properties.jpg" width="640" height="420" alt="Output from properties.pl" /></center></p>
 
 =end html
 
@@ -6970,7 +7153,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/properties.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/properties.pl>
 
 =head2 Example: protection.pl
 
@@ -6983,7 +7166,7 @@ the Excel::Writer::XLSX module.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/protection.jpg" width="640" height="420" alt="Output from protection.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/protection.jpg" width="640" height="420" alt="Output from protection.pl" /></center></p>
 
 =end html
 
@@ -7034,7 +7217,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/protection.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/protection.pl>
 
 =head2 Example: rich_strings.pl
 
@@ -7047,7 +7230,7 @@ strings with multiple formatting.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/rich_strings.jpg" width="640" height="420" alt="Output from rich_strings.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/rich_strings.jpg" width="640" height="420" alt="Output from rich_strings.pl" /></center></p>
 
 =end html
 
@@ -7098,7 +7281,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/rich_strings.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/rich_strings.pl>
 
 =head2 Example: right_to_left.pl
 
@@ -7112,7 +7295,7 @@ of Excel.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/right_to_left.jpg" width="640" height="420" alt="Output from right_to_left.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/right_to_left.jpg" width="640" height="420" alt="Output from right_to_left.pl" /></center></p>
 
 =end html
 
@@ -7145,7 +7328,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/right_to_left.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/right_to_left.pl>
 
 =head2 Example: sales.pl
 
@@ -7158,7 +7341,7 @@ Also uses functions from the L<Excel::Writer::XLSX::Utility> module.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/sales.jpg" width="640" height="420" alt="Output from sales.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/sales.jpg" width="640" height="420" alt="Output from sales.pl" /></center></p>
 
 =end html
 
@@ -7268,7 +7451,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/sales.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/sales.pl>
 
 =head2 Example: shape1.pl
 
@@ -7281,7 +7464,7 @@ add shapes to an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape1.jpg" width="640" height="420" alt="Output from shape1.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape1.jpg" width="640" height="420" alt="Output from shape1.pl" /></center></p>
 
 =end html
 
@@ -7321,7 +7504,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape1.pl>
 
 =head2 Example: shape2.pl
 
@@ -7334,7 +7517,7 @@ modify shape properties in an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape2.jpg" width="640" height="420" alt="Output from shape2.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape2.jpg" width="640" height="420" alt="Output from shape2.pl" /></center></p>
 
 =end html
 
@@ -7394,7 +7577,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape2.pl>
 
 =head2 Example: shape3.pl
 
@@ -7407,7 +7590,7 @@ scale shapes in an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape3.jpg" width="640" height="420" alt="Output from shape3.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape3.jpg" width="640" height="420" alt="Output from shape3.pl" /></center></p>
 
 =end html
 
@@ -7446,7 +7629,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape3.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape3.pl>
 
 =head2 Example: shape4.pl
 
@@ -7459,7 +7642,7 @@ demonstrate stenciling in an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape4.jpg" width="640" height="420" alt="Output from shape4.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape4.jpg" width="640" height="420" alt="Output from shape4.pl" /></center></p>
 
 =end html
 
@@ -7523,7 +7706,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape4.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape4.pl>
 
 =head2 Example: shape5.pl
 
@@ -7536,7 +7719,7 @@ add shapes (objects and top/bottom connectors) to an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape5.jpg" width="640" height="420" alt="Output from shape5.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape5.jpg" width="640" height="420" alt="Output from shape5.pl" /></center></p>
 
 =end html
 
@@ -7583,7 +7766,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape5.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape5.pl>
 
 =head2 Example: shape6.pl
 
@@ -7596,7 +7779,7 @@ add shapes (objects and right/left connectors) to an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape6.jpg" width="640" height="420" alt="Output from shape6.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape6.jpg" width="640" height="420" alt="Output from shape6.pl" /></center></p>
 
 =end html
 
@@ -7643,7 +7826,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape6.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape6.pl>
 
 =head2 Example: shape7.pl
 
@@ -7656,7 +7839,7 @@ add shapes and one-to-many connectors to an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape7.jpg" width="640" height="420" alt="Output from shape7.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape7.jpg" width="640" height="420" alt="Output from shape7.pl" /></center></p>
 
 =end html
 
@@ -7732,7 +7915,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape7.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape7.pl>
 
 =head2 Example: shape8.pl
 
@@ -7745,7 +7928,7 @@ add shapes and one-to-many connectors to an Excel xlsx file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape8.jpg" width="640" height="420" alt="Output from shape8.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape8.jpg" width="640" height="420" alt="Output from shape8.pl" /></center></p>
 
 =end html
 
@@ -7820,7 +8003,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape8.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape8.pl>
 
 =head2 Example: shape_all.pl
 
@@ -7839,7 +8022,7 @@ part of the ECMA-376 standard.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/shape_all.jpg" width="640" height="420" alt="Output from shape_all.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/shape_all.jpg" width="640" height="420" alt="Output from shape_all.pl" /></center></p>
 
 =end html
 
@@ -8083,7 +8266,7 @@ Source code for this example:
     Tabs	squareTabs
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/shape_all.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/shape_all.pl>
 
 =head2 Example: sparklines1.pl
 
@@ -8099,7 +8282,7 @@ of more complex sparkline formatting.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/sparklines1.jpg" width="640" height="420" alt="Output from sparklines1.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/sparklines1.jpg" width="640" height="420" alt="Output from sparklines1.pl" /></center></p>
 
 =end html
 
@@ -8170,7 +8353,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/sparklines1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/sparklines1.pl>
 
 =head2 Example: sparklines2.pl
 
@@ -8186,7 +8369,7 @@ options that can be applied to sparklines.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/sparklines2.jpg" width="640" height="420" alt="Output from sparklines2.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/sparklines2.jpg" width="640" height="420" alt="Output from sparklines2.pl" /></center></p>
 
 =end html
 
@@ -8597,7 +8780,7 @@ Source code for this example:
     __END__
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/sparklines2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/sparklines2.pl>
 
 =head2 Example: stats_ext.pl
 
@@ -8612,7 +8795,7 @@ other worksheets within the same workbook.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/stats_ext.jpg" width="640" height="420" alt="Output from stats_ext.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/stats_ext.jpg" width="640" height="420" alt="Output from stats_ext.pl" /></center></p>
 
 =end html
 
@@ -8696,7 +8879,7 @@ Source code for this example:
     $worksheet2->write( 'B9', 24.8,     $numformat );
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/stats_ext.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/stats_ext.pl>
 
 =head2 Example: stocks.pl
 
@@ -8711,7 +8894,7 @@ with colours to indicate if a share price has gone up or down.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/stocks.jpg" width="640" height="420" alt="Output from stocks.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/stocks.jpg" width="640" height="420" alt="Output from stocks.pl" /></center></p>
 
 =end html
 
@@ -8795,7 +8978,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/stocks.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/stocks.pl>
 
 =head2 Example: tab_colors.pl
 
@@ -8807,7 +8990,7 @@ Example of how to set Excel worksheet tab colours.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/tab_colors.jpg" width="640" height="420" alt="Output from tab_colors.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/tab_colors.jpg" width="640" height="420" alt="Output from tab_colors.pl" /></center></p>
 
 =end html
 
@@ -8840,7 +9023,7 @@ Source code for this example:
     $worksheet4->set_tab_color( 0x35 );    # Orange
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/tab_colors.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/tab_colors.pl>
 
 =head2 Example: tables.pl
 
@@ -8855,7 +9038,7 @@ structure that can be referenced in a formula or formatted collectively.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/tables.jpg" width="640" height="420" alt="Output from tables.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/tables.jpg" width="640" height="420" alt="Output from tables.pl" /></center></p>
 
 =end html
 
@@ -9231,7 +9414,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/tables.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/tables.pl>
 
 =head2 Example: write_handler1.pl
 
@@ -9247,7 +9430,7 @@ The following example shows how to add a handler for a 7 digit ID number.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/write_handler1.jpg" width="640" height="420" alt="Output from write_handler1.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/write_handler1.jpg" width="640" height="420" alt="Output from write_handler1.pl" /></center></p>
 
 =end html
 
@@ -9319,7 +9502,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/write_handler1.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/write_handler1.pl>
 
 =head2 Example: write_handler2.pl
 
@@ -9337,7 +9520,7 @@ filters data that isn't in the third column.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/write_handler2.jpg" width="640" height="420" alt="Output from write_handler2.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/write_handler2.jpg" width="640" height="420" alt="Output from write_handler2.pl" /></center></p>
 
 =end html
 
@@ -9416,7 +9599,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/write_handler2.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/write_handler2.pl>
 
 =head2 Example: write_handler3.pl
 
@@ -9434,7 +9617,7 @@ See write_handler4.pl for a more rigorous example with error handling.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/write_handler3.jpg" width="640" height="420" alt="Output from write_handler3.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/write_handler3.jpg" width="640" height="420" alt="Output from write_handler3.pl" /></center></p>
 
 =end html
 
@@ -9505,7 +9688,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/write_handler3.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/write_handler3.pl>
 
 =head2 Example: write_handler4.pl
 
@@ -9523,7 +9706,7 @@ This is a more rigorous version of write_handler3.pl.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/write_handler4.jpg" width="640" height="420" alt="Output from write_handler4.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/write_handler4.jpg" width="640" height="420" alt="Output from write_handler4.pl" /></center></p>
 
 =end html
 
@@ -9634,7 +9817,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/write_handler4.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/write_handler4.pl>
 
 =head2 Example: write_to_scalar.pl
 
@@ -9683,7 +9866,7 @@ An example of writing an Excel::Writer::XLSX file to a perl scalar.
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/write_to_scalar.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/write_to_scalar.pl>
 
 =head2 Example: unicode_2022_jp.pl
 
@@ -9699,7 +9882,7 @@ encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_2022_jp.jpg" width="640" height="420" alt="Output from unicode_2022_jp.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_2022_jp.jpg" width="640" height="420" alt="Output from unicode_2022_jp.pl" /></center></p>
 
 =end html
 
@@ -9748,7 +9931,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_2022_jp.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_2022_jp.pl>
 
 =head2 Example: unicode_8859_11.pl
 
@@ -9764,7 +9947,7 @@ This example generates some Thai from a file with ISO-8859-11 encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_8859_11.jpg" width="640" height="420" alt="Output from unicode_8859_11.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_8859_11.jpg" width="640" height="420" alt="Output from unicode_8859_11.pl" /></center></p>
 
 =end html
 
@@ -9813,7 +9996,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_8859_11.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_8859_11.pl>
 
 =head2 Example: unicode_8859_7.pl
 
@@ -9829,7 +10012,7 @@ This example generates some Greek from a file with ISO-8859-7 encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_8859_7.jpg" width="640" height="420" alt="Output from unicode_8859_7.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_8859_7.jpg" width="640" height="420" alt="Output from unicode_8859_7.pl" /></center></p>
 
 =end html
 
@@ -9878,7 +10061,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_8859_7.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_8859_7.pl>
 
 =head2 Example: unicode_big5.pl
 
@@ -9894,7 +10077,7 @@ This example generates some Chinese from a file with BIG5 encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_big5.jpg" width="640" height="420" alt="Output from unicode_big5.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_big5.jpg" width="640" height="420" alt="Output from unicode_big5.pl" /></center></p>
 
 =end html
 
@@ -9943,7 +10126,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_big5.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_big5.pl>
 
 =head2 Example: unicode_cp1251.pl
 
@@ -9959,7 +10142,7 @@ This example generates some Russian from a file with CP1251 encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_cp1251.jpg" width="640" height="420" alt="Output from unicode_cp1251.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_cp1251.jpg" width="640" height="420" alt="Output from unicode_cp1251.pl" /></center></p>
 
 =end html
 
@@ -10008,7 +10191,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_cp1251.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_cp1251.pl>
 
 =head2 Example: unicode_cp1256.pl
 
@@ -10024,7 +10207,7 @@ This example generates some Arabic text from a CP-1256 encoded file.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_cp1256.jpg" width="640" height="420" alt="Output from unicode_cp1256.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_cp1256.jpg" width="640" height="420" alt="Output from unicode_cp1256.pl" /></center></p>
 
 =end html
 
@@ -10073,7 +10256,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_cp1256.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_cp1256.pl>
 
 =head2 Example: unicode_cyrillic.pl
 
@@ -10089,7 +10272,7 @@ Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_cyrillic.jpg" width="640" height="420" alt="Output from unicode_cyrillic.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_cyrillic.jpg" width="640" height="420" alt="Output from unicode_cyrillic.pl" /></center></p>
 
 =end html
 
@@ -10143,7 +10326,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_cyrillic.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_cyrillic.pl>
 
 =head2 Example: unicode_koi8r.pl
 
@@ -10159,7 +10342,7 @@ This example generates some Russian from a file with KOI8-R encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_koi8r.jpg" width="640" height="420" alt="Output from unicode_koi8r.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_koi8r.jpg" width="640" height="420" alt="Output from unicode_koi8r.pl" /></center></p>
 
 =end html
 
@@ -10208,7 +10391,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_koi8r.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_koi8r.pl>
 
 =head2 Example: unicode_polish_utf8.pl
 
@@ -10224,7 +10407,7 @@ This example generates some Polish from a file with UTF8 encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_polish_utf8.jpg" width="640" height="420" alt="Output from unicode_polish_utf8.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_polish_utf8.jpg" width="640" height="420" alt="Output from unicode_polish_utf8.pl" /></center></p>
 
 =end html
 
@@ -10273,7 +10456,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_polish_utf8.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_polish_utf8.pl>
 
 =head2 Example: unicode_shift_jis.pl
 
@@ -10289,7 +10472,7 @@ encoded text.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/unicode_shift_jis.jpg" width="640" height="420" alt="Output from unicode_shift_jis.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/unicode_shift_jis.jpg" width="640" height="420" alt="Output from unicode_shift_jis.pl" /></center></p>
 
 =end html
 
@@ -10338,7 +10521,7 @@ Source code for this example:
     
 
 
-Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.77/examples/unicode_shift_jis.pl>
+Download this example: L<http://cpansearch.perl.org/src/JMCNAMARA/Excel-Writer-XLSX-0.78/examples/unicode_shift_jis.pl>
 
 =head1 AUTHOR
 
@@ -20,7 +20,7 @@ use Carp;
 
 
 our @ISA     = qw(Exporter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 our $AUTOLOAD;
 
 
@@ -20,7 +20,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -22,7 +22,7 @@ use Excel::Writer::XLSX::Utility qw(xl_rowcol_to_cell);
 
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -21,7 +21,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -20,7 +20,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -31,7 +31,7 @@ use Excel::Writer::XLSX::Package::Theme;
 use Excel::Writer::XLSX::Package::VML;
 
 our @ISA     = qw(Exporter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -20,7 +20,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 our $schema_root     = 'http://schemas.openxmlformats.org';
 our $package_schema  = $schema_root . '/package/2006/relationships';
@@ -21,7 +21,7 @@ use Encode;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -20,7 +20,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -348,7 +348,13 @@ sub _write_font {
         $self->xml_empty_tag( 'sz', 'val', $format->{_size} );
     }
 
-    if ( my $theme = $format->{_theme} ) {
+    my $theme = $format->{_theme};
+
+
+    if ( $theme == -1 ) {
+        # Ignore for excel2003_style.
+    }
+    elsif ( $theme ) {
         $self->_write_color( 'theme' => $theme );
     }
     elsif ( my $index = $format->{_color_indexed} ) {
@@ -365,7 +371,10 @@ sub _write_font {
 
     if ( !$dxf_format ) {
         $self->xml_empty_tag( 'name',   'val', $format->{_font} );
-        $self->xml_empty_tag( 'family', 'val', $format->{_font_family} );
+
+        if ($format->{_font_family}) {
+            $self->xml_empty_tag( 'family', 'val', $format->{_font_family} );
+        }
 
         if ( $format->{_font} eq 'Calibri' && !$format->{_hyperlink} ) {
             $self->xml_empty_tag(
@@ -20,7 +20,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -30,7 +30,7 @@ use IO::File;
 use utf8;
 
 our @ISA     = qw(Exporter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -20,7 +20,7 @@ use Carp;
 use Excel::Writer::XLSX::Package::XMLwriter;
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -21,7 +21,7 @@ use Carp;
 use IO::File;
 
 our @ISA     = qw(Exporter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 #
 # NOTE: this module is a light weight re-implementation of XML::Writer. See
@@ -20,7 +20,7 @@ use Carp;
 use Exporter;
 
 our @ISA     = qw(Exporter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 our $AUTOLOAD;
 
 ###############################################################################
@@ -21,7 +21,7 @@ use warnings;
 use autouse 'Date::Calc'  => qw(Delta_DHMS Decode_Date_EU Decode_Date_US);
 use autouse 'Date::Manip' => qw(ParseDate Date_Init);
 
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 # Row and column functions
 my @rowcol = qw(
@@ -33,7 +33,7 @@ use Excel::Writer::XLSX::Package::XMLwriter;
 use Excel::Writer::XLSX::Utility qw(xl_cell_to_rowcol xl_rowcol_to_cell);
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -55,8 +55,10 @@ sub new {
     my $self  = Excel::Writer::XLSX::Package::XMLwriter->new();
 
     $self->{_filename}           = $_[0] || '';
+    my $options                  = $_[1] || {};
+
     $self->{_tempdir}            = undef;
-    $self->{_1904}               = 0;
+    $self->{_date_1904}          = 0;
     $self->{_activesheet}        = 0;
     $self->{_firstsheet}         = 0;
     $self->{_selected}           = 0;
@@ -92,7 +94,30 @@ sub new {
     $self->{_window_width}       = 16095;
     $self->{_window_height}      = 9660;
     $self->{_tab_ratio}          = 500;
+    $self->{_excel2003_style}    = 0;
+
+    $self->{_default_format_properties} = {};
+
+    if ( exists $options->{tempdir} ) {
+        $self->{_tempdir} = $options->{tempdir};
+    }
+
+    if ( exists $options->{date_1904} ) {
+        $self->{_date_1904} = $options->{date_1904};
+    }
 
+    if ( exists $options->{optimization} ) {
+        $self->{_optimization} = $options->{optimization};
+    }
+
+    if ( exists $options->{default_format_properties} ) {
+        $self->{_default_format_properties} =
+          $options->{default_format_properties};
+    }
+
+    if ( exists $options->{excel2003_style} ) {
+        $self->{_excel2003_style} = 1;
+    }
 
     # Structures for the shared strings data.
     $self->{_str_total}  = 0;
@@ -100,12 +125,21 @@ sub new {
     $self->{_str_table}  = {};
     $self->{_str_array}  = [];
 
+    # Formula calculation default settings.
+    $self->{_calc_id}      = 124519;
+    $self->{_calc_mode}    = 'auto';
+    $self->{_calc_on_load} = 1;
+
 
     bless $self, $class;
 
     # Add the default cell format.
-    $self->add_format( xf_index => 0 );
-
+    if ( $self->{_excel2003_style} ) {
+        $self->add_format( xf_index => 0, font_family => 0 );
+    }
+    else {
+        $self->add_format( xf_index => 0 );
+    }
 
     # Check for a filename unless it is an existing filehandle
     if ( not ref $self->{_filename} and $self->{_filename} eq '' ) {
@@ -312,10 +346,11 @@ sub add_worksheet {
         \$self->{_str_unique},
         \$self->{_str_table},
 
-        $self->{_1904},
+        $self->{_date_1904},
         $self->{_palette},
         $self->{_optimization},
         $self->{_tempdir},
+        $self->{_excel2003_style},
 
     );
 
@@ -369,7 +404,7 @@ sub add_chart {
         \$self->{_str_unique},
         \$self->{_str_table},
 
-        $self->{_1904},
+        $self->{_date_1904},
         $self->{_palette},
         $self->{_optimization},
     );
@@ -480,7 +515,18 @@ sub add_format {
     my $self = shift;
 
     my @init_data =
-      ( \$self->{_xf_format_indices}, \$self->{_dxf_format_indices}, @_ );
+      ( \$self->{_xf_format_indices}, \$self->{_dxf_format_indices} );
+
+    # Change default format style for Excel2003/XLS format.
+    if ( $self->{_excel2003_style} ) {
+        push @init_data, ( font => 'Arial', size => 10, theme => -1 );
+    }
+
+    # Add the default format properties.
+    push @init_data, %{$self->{_default_format_properties}};
+
+    # Add the user defined properties.
+    push @init_data, @_;
 
     my $format = Excel::Writer::XLSX::Format->new( @init_data );
 
@@ -521,10 +567,10 @@ sub set_1904 {
     my $self = shift;
 
     if ( defined( $_[0] ) ) {
-        $self->{_1904} = $_[0];
+        $self->{_date_1904} = $_[0];
     }
     else {
-        $self->{_1904} = 1;
+        $self->{_date_1904} = 1;
     }
 }
 
@@ -539,7 +585,7 @@ sub get_1904 {
 
     my $self = shift;
 
-    return $self->{_1904};
+    return $self->{_date_1904};
 }
 
 
@@ -814,6 +860,32 @@ sub add_vba_project {
 
 ###############################################################################
 #
+# set_calc_mode()
+#
+# Set the Excel caclcuation mode for the workbook.
+#
+sub set_calc_mode {
+
+    my $self    = shift;
+    my $mode    = shift || 'auto';
+    my $calc_id = shift;
+
+    $self->{_calc_mode} = $mode;
+
+    if ( $mode eq 'manual' ) {
+        $self->{_calc_mode}    = 'manual';
+        $self->{_calc_on_load} = 0;
+    }
+    elsif ( $mode eq 'auto_except_tables' ) {
+        $self->{_calc_mode} = 'autoNoTable';
+    }
+
+    $self->{_calc_id} = $calc_id if defined $calc_id;
+}
+
+
+###############################################################################
+#
 # _store_workbook()
 #
 # Assemble worksheets into a workbook.
@@ -2084,7 +2156,7 @@ sub _write_file_version {
 sub _write_workbook_pr {
 
     my $self                   = shift;
-    my $date_1904              = $self->{_1904};
+    my $date_1904              = $self->{_date_1904};
     my $show_ink_annotation    = 0;
     my $auto_compress_pictures = 0;
     my $default_theme_version  = 124226;
@@ -2208,13 +2280,23 @@ sub _write_sheet {
 sub _write_calc_pr {
 
     my $self            = shift;
-    my $calc_id         = 124519;
+    my $calc_id         = $self->{_calc_id};
     my $concurrent_calc = 0;
 
-    my @attributes = (
-        'calcId'         => $calc_id,
-        'fullCalcOnLoad' => 1
-    );
+    my @attributes = ( calcId => $calc_id );
+
+    if ( $self->{_calc_mode} eq 'manual' ) {
+        push @attributes, 'calcMode'   => 'manual';
+        push @attributes, 'calcOnSave' => 0;
+    }
+    elsif ( $self->{_calc_mode} eq 'autoNoTable' ) {
+        push @attributes, calcMode => 'autoNoTable';
+    }
+
+    if ( $self->{_calc_on_load} ) {
+        push @attributes, 'fullCalcOnLoad' => 1;
+    }
+
 
     $self->xml_empty_tag( 'calcPr', @attributes );
 }
@@ -27,7 +27,7 @@ use Excel::Writer::XLSX::Utility
   qw(xl_cell_to_rowcol xl_rowcol_to_cell xl_col_to_name xl_range);
 
 our @ISA     = qw(Excel::Writer::XLSX::Package::XMLwriter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -52,17 +52,18 @@ sub new {
     my $colmax = 16_384;
     my $strmax = 32767;
 
-    $self->{_name}         = $_[0];
-    $self->{_index}        = $_[1];
-    $self->{_activesheet}  = $_[2];
-    $self->{_firstsheet}   = $_[3];
-    $self->{_str_total}    = $_[4];
-    $self->{_str_unique}   = $_[5];
-    $self->{_str_table}    = $_[6];
-    $self->{_1904}         = $_[7];
-    $self->{_palette}      = $_[8];
-    $self->{_optimization} = $_[9] || 0;
-    $self->{_tempdir}      = $_[10];
+    $self->{_name}            = $_[0];
+    $self->{_index}           = $_[1];
+    $self->{_activesheet}     = $_[2];
+    $self->{_firstsheet}      = $_[3];
+    $self->{_str_total}       = $_[4];
+    $self->{_str_unique}      = $_[5];
+    $self->{_str_table}       = $_[6];
+    $self->{_date_1904}       = $_[7];
+    $self->{_palette}         = $_[8];
+    $self->{_optimization}    = $_[9] || 0;
+    $self->{_tempdir}         = $_[10];
+    $self->{_excel2003_style} = $_[11];
 
     $self->{_ext_sheets}    = [];
     $self->{_fileclosed}    = 0;
@@ -100,6 +101,7 @@ sub new {
     $self->{_header_footer_changed} = 0;
     $self->{_header}                = '';
     $self->{_footer}                = '';
+    $self->{_header_footer_aligns}  = 0;
 
     $self->{_margin_left}   = 0.7;
     $self->{_margin_right}  = 0.7;
@@ -146,8 +148,11 @@ sub new {
     $self->{_outline_on}        = 1;
     $self->{_outline_changed}   = 0;
 
-    $self->{_default_row_height} = 15;
-    $self->{_default_row_zeroed} = 0;
+    $self->{_original_row_height} = 15;
+    $self->{_default_row_height}  = 15;
+    $self->{_default_row_pixels}  = 20;
+    $self->{_default_col_pixels}  = 64;
+    $self->{_default_row_zeroed}  = 0;
 
     $self->{_names} = {};
 
@@ -211,6 +216,19 @@ sub new {
     $self->{_cond_formats} = {};
     $self->{_dxf_priority} = 1;
 
+    if ( $self->{_excel2003_style} ) {
+        $self->{_original_row_height}  = 12.75;
+        $self->{_default_row_height}   = 12.75;
+        $self->{_default_row_pixels}   = 17;
+        $self->{_margin_left}          = 0.75;
+        $self->{_margin_right}         = 0.75;
+        $self->{_margin_top}           = 1;
+        $self->{_margin_bottom}        = 1;
+        $self->{_margin_header}        = 0.5;
+        $self->{_margin_footer}        = 0.5;
+        $self->{_header_footer_aligns} = 1;
+    }
+
     bless $self, $class;
     return $self;
 }
@@ -273,7 +291,6 @@ sub _assemble_xml_file {
         $self->_write_optimized_sheet_data();
     }
 
-
     # Write the sheetProtection element.
     $self->_write_sheet_protection();
 
@@ -281,7 +298,9 @@ sub _assemble_xml_file {
     #$self->_write_sheet_calc_pr();
 
     # Write the worksheet phonetic properties.
-    #$self->_write_phonetic_pr();
+    if ($self->{_excel2003_style}) {
+        $self->_write_phonetic_pr();
+    }
 
     # Write the autoFilter element.
     $self->_write_auto_filter();
@@ -2792,7 +2811,7 @@ sub convert_date_time {
     }
 
     # Set the epoch as 1900 or 1904. Defaults to 1900.
-    my $date_1904 = $self->{_1904};
+    my $date_1904 = $self->{_date_1904};
 
 
     # Special cases for Excel.
@@ -2913,10 +2932,10 @@ sub set_row {
 sub set_default_row {
 
     my $self        = shift;
-    my $height      = shift || 15;
+    my $height      = shift || $self->{_original_row_height};
     my $zero_height = shift || 0;
 
-    if ( $height != 15 ) {
+    if ( $height != $self->{_original_row_height} ) {
         $self->{_default_row_height} = $height;
 
         # Store the row change to allow optimisations.
@@ -4663,7 +4682,7 @@ sub _position_object_pixels {
     }
     else {
         # Optimisation for when the column widths haven't changed.
-        $x_abs += 64 * $col_start;
+        $x_abs += $self->{_default_col_pixels} * $col_start;
     }
 
     $x_abs += $x1;
@@ -4677,7 +4696,7 @@ sub _position_object_pixels {
     }
     else {
         # Optimisation for when the row heights haven't changed.
-        $y_abs += 20 * $row_start;
+        $y_abs += $self->{_default_row_pixels} * $row_start;
     }
 
     $y_abs += $y1;
@@ -4851,7 +4870,7 @@ sub _size_col {
         }
     }
     else {
-        $pixels = 64;
+        $pixels = $self->{_default_col_pixels};
     }
 
     return $pixels;
@@ -5815,7 +5834,7 @@ sub _comment_params {
 #
 sub _button_params {
 
-    my $self = shift;
+    my $self   = shift;
     my $row    = shift;
     my $col    = shift;
     my $params = shift;
@@ -5844,8 +5863,8 @@ sub _button_params {
 
 
     # Ensure that a width and height have been set.
-    my $default_width  = 64;
-    my $default_height = 20;
+    my $default_width  = $self->{_default_col_pixels};
+    my $default_height = $self->{_default_row_pixels};
     $params->{width}  = $default_width  if !$params->{width};
     $params->{height} = $default_height if !$params->{height};
 
@@ -6312,7 +6331,7 @@ sub _write_sheet_format_pr {
 
     my @attributes = ( 'defaultRowHeight' => $default_row_height );
 
-    if ( $self->{_default_row_height} != 15 ) {
+    if ( $self->{_default_row_height} != $self->{_original_row_height} ) {
         push @attributes, ( 'customHeight' => 1 );
     }
 
@@ -6720,9 +6739,17 @@ sub _write_row {
     push @attributes, ( 'spans'        => $spans )    if defined $spans;
     push @attributes, ( 's'            => $xf_index ) if $xf_index;
     push @attributes, ( 'customFormat' => 1 )         if $format;
-    push @attributes, ( 'ht'           => $height )   if $height != 15;
+
+    if ( $height != $self->{_original_row_height} ) {
+        push @attributes, ( 'ht' => $height );
+    }
+
     push @attributes, ( 'hidden'       => 1 )         if $hidden;
-    push @attributes, ( 'customHeight' => 1 )         if $height != 15;
+
+    if ( $height != $self->{_original_row_height} ) {
+        push @attributes, ( 'customHeight' => 1 );
+    }
+
     push @attributes, ( 'outlineLevel' => $level )    if $level;
     push @attributes, ( 'collapsed'    => 1 )         if $collapsed;
 
@@ -6953,7 +6980,7 @@ sub _write_sheet_calc_pr {
 sub _write_phonetic_pr {
 
     my $self    = shift;
-    my $font_id = 1;
+    my $font_id = 0;
     my $type    = 'noConversion';
 
     my @attributes = (
@@ -7157,13 +7184,22 @@ sub _write_print_options {
 sub _write_header_footer {
 
     my $self = shift;
+    my @attributes = ();
+
+    if ($self->{_header_footer_aligns}) {
+        push @attributes,( 'alignWithMargins' => 0 );
+    }
 
-    return unless $self->{_header_footer_changed};
 
-    $self->xml_start_tag( 'headerFooter' );
-    $self->_write_odd_header() if $self->{_header};
-    $self->_write_odd_footer() if $self->{_footer};
-    $self->xml_end_tag( 'headerFooter' );
+    if ( $self->{_header_footer_changed} ) {
+        $self->xml_start_tag( 'headerFooter', @attributes );
+        $self->_write_odd_header() if $self->{_header};
+        $self->_write_odd_footer() if $self->{_footer};
+        $self->xml_end_tag( 'headerFooter' );
+    }
+    elsif ( $self->{_excel2003_style} ) {
+        $self->xml_empty_tag( 'headerFooter', @attributes );
+    }
 }
 
 
@@ -18,7 +18,7 @@ use strict;
 use Excel::Writer::XLSX::Workbook;
 
 our @ISA     = qw(Excel::Writer::XLSX::Workbook Exporter);
-our $VERSION = '0.77';
+our $VERSION = '0.78';
 
 
 ###############################################################################
@@ -50,7 +50,7 @@ Excel::Writer::XLSX - Create a new file in the Excel 2007+ XLSX format.
 
 =head1 VERSION
 
-This document refers to version 0.77 of Excel::Writer::XLSX, released May 6, 2014.
+This document refers to version 0.78 of Excel::Writer::XLSX, released September 28, 2014.
 
 
 
@@ -152,6 +152,7 @@ The Excel::Writer::XLSX module provides an object oriented interface to a new Ex
     sheets()
     set_1904()
     set_optimization()
+    set_calc_mode()
 
 If you are unfamiliar with object oriented interfaces or the way that they are implemented in Perl have a look at C<perlobj> and C<perltoot> in the main Perl documentation.
 
@@ -300,6 +301,7 @@ The available types are:
     column
     line
     pie
+    doughnut
     scatter
     stock
 
@@ -600,6 +602,29 @@ Note, that with this optimization turned on a row of data is written and then di
 This method must be called before any calls to C<add_worksheet()>.
 
 
+
+=head2 set_calc_mode( $mode )
+
+Set the calculation mode for formulas in the workbook. This is mainly of use for workbooks with slow formulas where you want to allow the user to calculate them manually.
+
+The mode parameter can be one of the following strings:
+
+=over
+
+=item C<auto>
+
+The default. Excel will re-calculate formulas when a formula or a value affecting the formula changes.
+
+=item C<manual>
+
+Only re-calculate formulas when the user requires it. Generally by pressing F9.
+
+=item C<auto_except_tables>
+
+Excel will automatically re-calculate formulas except for tables.
+
+=back
+
 =head1 WORKSHEET METHODS
 
 A new worksheet is created by calling the C<add_worksheet()> method from a workbook object:
@@ -909,7 +934,7 @@ See the C<rich_strings.pl> example in the distro for more examples.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/rich_strings.jpg" width="640" height="420" alt="Output from rich_strings.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/rich_strings.jpg" width="640" height="420" alt="Output from rich_strings.pl" /></center></p>
 
 =end html
 
@@ -4033,7 +4058,7 @@ A typical use case might be to restrict data in a cell to integer values in a ce
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/validation_example.jpg" alt="The output from the above example"/></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/validation_example.jpg" alt="The output from the above example"/></center></p>
 
 =end html
 
@@ -4433,7 +4458,7 @@ For example the following criteria is used to highlight cells >= 50 in red in th
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/conditional_example.jpg" alt="The output from the above example"/></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/conditional_example.jpg" alt="The output from the above example"/></center></p>
 
 =end html
 
@@ -5074,7 +5099,7 @@ In Excel::Writer::XLSX Sparklines can be added to cells using the C<add_sparklin
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/sparklines1.jpg" alt="Sparklines example."/></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/sparklines1.jpg" alt="Sparklines example."/></center></p>
 
 =end html
 
@@ -5355,7 +5380,7 @@ Tables in Excel are a way of grouping a range of cells into a single entity that
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/tables.jpg" width="640" height="420" alt="Output from tables.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/tables.jpg" width="640" height="420" alt="Output from tables.pl" /></center></p>
 
 =end html
 
@@ -5779,7 +5804,7 @@ The following example shows some of the basic features of Excel::Writer::XLSX.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/a_simple.jpg" width="640" height="420" alt="Output from a_simple.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/a_simple.jpg" width="640" height="420" alt="Output from a_simple.pl" /></center></p>
 
 =end html
 
@@ -5832,7 +5857,7 @@ The following is a general example which demonstrates some features of working w
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/regions.jpg" width="640" height="420" alt="Output from regions.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/regions.jpg" width="640" height="420" alt="Output from regions.pl" /></center></p>
 
 =end html
 
@@ -5915,7 +5940,7 @@ Example of how to add conditional formatting to an Excel::Writer::XLSX file. The
 =begin html
 
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/conditional_format.jpg" width="640" height="420" alt="Output from conditional_format.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/conditional_format.jpg" width="640" height="420" alt="Output from conditional_format.pl" /></center></p>
 
 
 =end html
@@ -5991,7 +6016,7 @@ The following is a simple example of using functions.
 
 =begin html
 
-<p><center><img src="http://jmcnamara.github.com/excel-writer-xlsx/images/examples/stats.jpg" width="640" height="420" alt="Output from stats.pl" /></center></p>
+<p><center><img src="http://jmcnamara.github.io/excel-writer-xlsx/images/examples/stats.jpg" width="640" height="420" alt="Output from stats.pl" /></center></p>
 
 =end html
 
@@ -6063,6 +6088,7 @@ different features and options of the module. See L<Excel::Writer::XLSX::Example
     chart_column.pl         A demo of column (histogram) style charts.
     chart_line.pl           A demo of line style charts.
     chart_pie.pl            A demo of pie style charts.
+    chart_doughnut.pl       A demo of dougnut style charts.
     chart_radar.pl          A demo of radar style charts.
     chart_scatter.pl        A demo of scatter style charts.
     chart_secondary_axis.pl A demo of a line chart with a secondary axis.
@@ -0,0 +1,85 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_column09.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'column', embedded => 1 );
+
+# For testing, copy the randomly generated axis ids in the target xlsx file.
+$chart->{_axis_ids} = [ 47400832, 61387136 ];
+
+my $data = [
+    [  1,   2,   3,   4,   5  ],
+    [  1,   2,   3,   2,   1  ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$5',
+    values     => '=Sheet1!$B$1:$B$5'
+);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,85 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_column10.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'column', embedded => 1 );
+
+# For testing, copy the randomly generated axis ids in the target xlsx file.
+$chart->{_axis_ids} = [ 45686144, 45722240 ];
+
+my $data = [
+    [ 'A', 'B', 'C', 'D', 'E' ],
+    [  1,   2,   3,   2,   1  ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$5',
+    values     => '=Sheet1!$B$1:$B$5'
+);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,82 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_doughnut01.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$3',
+    values     => '=Sheet1!$B$1:$B$3',
+);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,84 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_doughnut02.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$3',
+    values     => '=Sheet1!$B$1:$B$3',
+);
+
+$chart->set_hole_size(10);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,84 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_doughnut03.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$3',
+    values     => '=Sheet1!$B$1:$B$3',
+);
+
+$chart->set_hole_size(90);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,84 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_doughnut04.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$3',
+    values     => '=Sheet1!$B$1:$B$3',
+);
+
+$chart->set_rotation(30);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,84 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_doughnut05.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$3',
+    values     => '=Sheet1!$B$1:$B$3',
+);
+
+$chart->set_rotation(360);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,85 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_doughnut06.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'doughnut', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    values => '=Sheet1!$A$1:$A$3',
+);
+
+$chart->add_series(
+    values => '=Sheet1!$B$1:$B$3',
+);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,84 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2014, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'chart_pie05.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename );
+my $worksheet = $workbook->add_worksheet();
+my $chart     = $workbook->add_chart( type => 'pie', embedded => 1 );
+
+my $data = [
+    [  2,  4,  6 ],
+    [ 60, 30, 10 ],
+
+];
+
+$worksheet->write( 'A1', $data );
+
+$chart->add_series(
+    categories => '=Sheet1!$A$1:$A$3',
+    values     => '=Sheet1!$B$1:$B$3',
+);
+
+$chart->set_rotation(45);
+
+$worksheet->insert_chart( 'E9', $chart );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
+
+
+
@@ -0,0 +1,69 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'default_format01.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename,
+                                          {default_format_properties => {size => 10}});
+
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->set_default_row( 12.75 );
+
+# Override for testing.
+$worksheet->{_original_row_height}  = 12.75;
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,63 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style01.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,79 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style02.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members = [
+    qw(
+      xl/printerSettings/printerSettings1.bin
+      xl/worksheets/_rels/sheet1.xml.rels
+      )
+];
+
+my $ignore_elements = {
+    '[Content_Types].xml'      => ['<Default Extension="bin"'],
+    'xl/worksheets/sheet1.xml' => ['<pageMargins'],
+};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->set_paper(9);
+
+my $bold = $workbook->add_format( bold => 1 );
+
+$worksheet->write( 'A1', 'Foo' );
+$worksheet->write( 'A2', 'Bar', $bold );
+
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,83 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style03.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members = [
+    qw(
+      xl/printerSettings/printerSettings1.bin
+      xl/worksheets/_rels/sheet1.xml.rels
+      )
+];
+
+my $ignore_elements = {
+    '[Content_Types].xml'      => ['<Default Extension="bin"'],
+    'xl/worksheets/sheet1.xml' => ['<pageMargins'],
+};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->set_paper(9);
+
+$worksheet->set_header( 'Page &P' );
+$worksheet->set_footer( '&A' );
+
+
+my $bold = $workbook->add_format( bold => 1 );
+
+$worksheet->write( 'A1', 'Foo' );
+$worksheet->write( 'A2', 'Bar', $bold );
+
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,65 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style04.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->write('A1', 'Foo');
+$worksheet->set_row(0, 21);
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,71 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style05.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {
+    'xl/drawings/drawing1.xml' => [
+        '<xdr:cNvPr', '<a:picLocks', '<a:srcRect/>', '<xdr:spPr',
+        '<a:noFill/>'
+    ],
+
+};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->insert_image( 'B3', $dir . 'images/red.jpg' );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,71 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style06.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {
+    'xl/drawings/drawing1.xml' => [
+        '<xdr:cNvPr', '<a:picLocks', '<a:srcRect/>', '<xdr:spPr',
+        '<a:noFill/>'
+    ],
+
+};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->insert_image( 'B3', $dir . 'images/red.jpg', 4, 3 );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,71 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style07.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+
+my $ignore_elements = {
+    'xl/drawings/drawing1.xml' => [
+        '<xdr:cNvPr', '<a:picLocks', '<a:srcRect/>', '<xdr:spPr',
+        '<a:noFill/>'
+    ],
+
+};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+$worksheet->insert_image( 'B3', $dir . 'images/yellow.jpg', 4, 3 );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
@@ -0,0 +1,68 @@
+###############################################################################
+#
+# Tests the output of Excel::Writer::XLSX against Excel generated files.
+#
+# reverse ('(c)'), January 2011, John McNamara, jmcnamara@cpan.org
+#
+
+use lib 't/lib';
+use TestFunctions qw(_compare_xlsx_files _is_deep_diff);
+use strict;
+use warnings;
+
+use Test::More tests => 1;
+
+###############################################################################
+#
+# Tests setup.
+#
+my $filename     = 'excel2003_style08.xlsx';
+my $dir          = 't/regression/';
+my $got_filename = $dir . "ewx_$filename";
+my $exp_filename = $dir . 'xlsx_files/' . $filename;
+
+my $ignore_members  = [];
+my $ignore_elements = {};
+
+
+###############################################################################
+#
+# Test the creation of a simple Excel::Writer::XLSX file.
+#
+use Excel::Writer::XLSX;
+
+my $workbook  = Excel::Writer::XLSX->new( $got_filename, {excel2003_style => 1});
+my $worksheet = $workbook->add_worksheet();
+
+my $courier =
+  $workbook->add_format( font => 'Courier', size => 8, font_family => 3 );
+
+$worksheet->write( 'A1', 'Foo' );
+$worksheet->write( 'A2', 'Bar', $courier );
+
+$workbook->close();
+
+
+###############################################################################
+#
+# Compare the generated and existing Excel files.
+#
+
+my ( $got, $expected, $caption ) = _compare_xlsx_files(
+
+    $got_filename,
+    $exp_filename,
+    $ignore_members,
+    $ignore_elements,
+);
+
+_is_deep_diff( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Cleanup.
+#
+unlink $got_filename;
+
+__END__
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_column09.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_column09.xlsx
new file mode 100644
index 00000000..d8ca51ae
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_column09.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_column10.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_column10.xlsx
new file mode 100644
index 00000000..77ba56fc
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_column10.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut01.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut01.xlsx
new file mode 100644
index 00000000..9c098a62
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut01.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut02.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut02.xlsx
new file mode 100644
index 00000000..66e9474e
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut02.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut03.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut03.xlsx
new file mode 100644
index 00000000..55af11a2
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut03.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut04.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut04.xlsx
new file mode 100644
index 00000000..6d9ee340
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut04.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut05.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut05.xlsx
new file mode 100644
index 00000000..007a32a8
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut05.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut06.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut06.xlsx
new file mode 100644
index 00000000..f41fc7a4
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_doughnut06.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_pie05.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_pie05.xlsx
new file mode 100644
index 00000000..e78d229c
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/chart_pie05.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/default_format01.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/default_format01.xlsx
new file mode 100644
index 00000000..e8673e42
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/default_format01.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style01.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style01.xlsx
new file mode 100644
index 00000000..544a4838
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style01.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style02.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style02.xlsx
new file mode 100644
index 00000000..4b2b53f7
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style02.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style03.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style03.xlsx
new file mode 100644
index 00000000..2e98ae8f
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style03.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style04.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style04.xlsx
new file mode 100644
index 00000000..eaeef64c
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style04.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style05.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style05.xlsx
new file mode 100644
index 00000000..6a353784
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style05.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style06.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style06.xlsx
new file mode 100644
index 00000000..86ea9fd9
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style06.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style07.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style07.xlsx
new file mode 100644
index 00000000..edf06796
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style07.xlsx differ
diff --git a/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style08.xlsx b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style08.xlsx
new file mode 100644
index 00000000..c78bc6e7
Binary files /dev/null and b/var/tmp/source/JMCNAMARA/Excel-Writer-XLSX-0.78/Excel-Writer-XLSX-0.78/t/regression/xlsx_files/excel2003_style08.xlsx differ
@@ -10,7 +10,7 @@ use TestFunctions '_new_workbook';
 use strict;
 use warnings;
 
-use Test::More tests => 1;
+use Test::More tests => 4;
 
 
 ###############################################################################
@@ -36,6 +36,51 @@ $workbook->_write_calc_pr();
 
 is( $got, $expected, $caption );
 
-__END__
 
+###############################################################################
+#
+# Test the _write_calc_pr() method with the calculation mode set to
+# auto_except_tables.
+#
+$caption  = " \tWorkbook: _write_calc_pr()";
+$expected = '<calcPr calcId="124519" calcMode="autoNoTable" fullCalcOnLoad="1"/>';
+
+$workbook = _new_workbook(\$got);
+$workbook->set_calc_mode('auto_except_tables');
+
+$workbook->_write_calc_pr();
+
+is( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Test the _write_calc_pr() method with the calculation mode set to manual.
+#
+$caption  = " \tWorkbook: _write_calc_pr()";
+$expected = '<calcPr calcId="124519" calcMode="manual" calcOnSave="0"/>';
+
+$workbook = _new_workbook(\$got);
+$workbook->set_calc_mode('manual');
 
+$workbook->_write_calc_pr();
+
+is( $got, $expected, $caption );
+
+
+###############################################################################
+#
+# Test the _write_calc_pr() method with non-default calc id.
+#
+$caption  = " \tWorkbook: _write_calc_pr()";
+$expected = '<calcPr calcId="12345" fullCalcOnLoad="1"/>';
+
+$workbook = _new_workbook(\$got);
+$workbook->set_calc_mode('auto', 12345);
+
+$workbook->_write_calc_pr();
+
+is( $got, $expected, $caption );
+
+
+__END__
@@ -27,8 +27,8 @@ my $worksheet = _new_worksheet( \$got );
 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
+    $worksheet->{_date_1904} = 0 if /Excel 1900/; # Change date system
+    $worksheet->{_date_1904} = 1 if /Excel 1904/; # Change date system
 
     next unless /\S/;  # Ignore blank lines
     next if /^#/;      # Ignore comments
@@ -28,7 +28,7 @@ my $worksheet;
 # Test the _write_phonetic_pr() method.
 #
 $caption  = " \tWorksheet: _write_phonetic_pr()";
-$expected = '<phoneticPr fontId="1" type="noConversion"/>';
+$expected = '<phoneticPr fontId="0" type="noConversion"/>';
 
 $worksheet = _new_worksheet(\$got);
 
@@ -32,7 +32,7 @@ $caption = " \tWorksheet: _assemble_xml_file()";
 
 $worksheet = _new_worksheet(\$got);
 
-$worksheet->{_1904} = 0;
+$worksheet->{_date_1904} = 0;
 
 $worksheet->select();
 
@@ -32,7 +32,7 @@ $caption = " \tWorksheet: _assemble_xml_file()";
 
 $worksheet = _new_worksheet(\$got);
 
-$worksheet->{_1904} = 0;
+$worksheet->{_date_1904} = 0;
 
 $worksheet->select();
 
@@ -36,7 +36,7 @@ my $format3 = Excel::Writer::XLSX::Format->new( {}, {}, xf_index => 3 );
 $worksheet = _new_worksheet(\$got);
 
 $worksheet->set_column('B:C', 12);
-$worksheet->{_1904} = 0;
+$worksheet->{_date_1904} = 0;
 
 $worksheet->select();
 $worksheet->merge_range_type( 'formula',     'B14:C14', '=1+2',                 $format1, 3 );