Spreadsheet::WriteExcel 2.21 pre-release

5 views
Skip to first unread message

jmcnamara

unread,
Oct 26, 2007, 8:42:35 AM10/26/07
to Spreadsheet::WriteExcel
Hi,

The next release of Spreadsheet::WriteExcel will focus on
compatibility issues.

The intention is to fix compatibility problems with Office Service
Pack 3 and with other third-party applications that can read Excel
files but cannot read Spreadsheet::WriteExcel files.

Compatibility issues that I am aware of:

Excel with SP3 and duplicate cells.
Google Docs (fixed in 2.20.01).
Apache POI can't read S::WE files.
QuickOffice can't read S::WE files.
Blackberry (??? Don't know. Some reports that it works. Some that
it doesn't).

If you are aware of other issues or applications let me know.


A pre-release, 2.20.01, of the next version of Spreadsheet::WriteExcel
is now available:

http://homepage.eircom.net/~jmcnamara/perl/prerel/Spreadsheet-WriteExcel-2.20.01.tar.gz


Changes:
2.21.01 October 26 2007 - Beta Release

+ Fixed compatibility problem with Google Docs.


Here is an example of one of the S::WE example files imported into
Google Docs. Note, Google Docs doesn't support all of Excel's features
yet so check how it handles a feature in an Excel file before
reporting problems about its support for S::WE files.

http://spreadsheets.google.com/pub?key=pxfabgNvfbyZa3cnWvEovDQ&gid=0

As usual let me know if you encounter any problems.

John.
--

jmcnamara

unread,
Nov 3, 2007, 1:15:39 PM11/3/07
to Spreadsheet::WriteExcel
On Oct 26, 12:42 pm, jmcnamara <jmcnam...@cpan.org> wrote:
>
> The next release of Spreadsheet::WriteExcel will focus on
> compatibility issues.
>
> The intention is to fix compatibility problems with Office Service
> Pack 3 and with other third-party applications that can read Excel
> files but cannot read Spreadsheet::WriteExcel files.


Hi,

The next iteration, 2.20.02, is now available. It adds Office SP3
compatibility via a workbook compatibility_mode() method.

Anyone who is interested can download it here:

http://homepage.eircom.net/~jmcnamara/perl/prerel/Spreadsheet-WriteExcel-2.20.02.tar.gz

I am also interested to hear from BlackBerry users about the
compatibility of files produced by the current version of the module.

John.
--

jmcnamara

unread,
Nov 4, 2007, 5:48:36 PM11/4/07
to Spreadsheet::WriteExcel
On Oct 26, 12:42 pm, jmcnamara <jmcnam...@cpan.org> wrote:

> The next release of Spreadsheet::WriteExcel will focus on
> compatibility issues.

> The intention is to fix compatibility problems with Office Service
> Pack 3 and with other third-party applications that can read Excel
> files but cannot read Spreadsheet::WriteExcel files.


Hi,

The next beta iteration, 2.20.03, is now available. This adds
increased compatibility with third party applications that read Excel
files.

The new compatibility_mode() feature is now optionally on instead of
optionally off.


Changes

2.21.03 November 04 2007 - Beta Release

+ Added increased compatibility with third party
Excel reading applications.

2.21.02 November 03 2007 - Beta Release

+ Added optional compatibility_mode() to fix problems
that can occur with Office SP3.

2.21.01 October 26 2007 - Beta Release

+ Fixed compatibility problem with Google Docs.

Anyone who is interested in testing this can download it here:

http://homepage.eircom.net/~jmcnamara/perl/prerel/Spreadsheet-WriteExcel-2.20.03.tar.gz


I am still interested to hear from BlackBerry users about testing
this.

In the absence of any major problems I'll roll this out to CPAN in the
next 1-2 weeks.

John.
--

rpn...@ibksoftware.com

unread,
Nov 6, 2007, 12:51:17 AM11/6/07
to Spreadsheet::WriteExcel
John;

Just tested 2.19 on my Blackberry. It works fine. I can't see my URL
link to google maps, but I'll test that later. My Excel file has 19
tabs with 496 rows on each tab. Slow in loading, but that is the
download from my email server. Blackberry version 4.1.0.286

On Oct 26, 7:42 am, jmcnamara <jmcnam...@cpan.org> wrote:
> Hi,
>
> The next release of Spreadsheet::WriteExcel will focus on
> compatibility issues.
>
> The intention is to fix compatibility problems with Office Service
> Pack 3 and with other third-party applications that can read Excel
> files but cannot read Spreadsheet::WriteExcel files.
>
> Compatibility issues that I am aware of:
>
> Excel with SP3 and duplicate cells.
> Google Docs (fixed in 2.20.01).
> Apache POI can't read S::WE files.
> QuickOffice can't read S::WE files.
> Blackberry (??? Don't know. Some reports that it works. Some that
> it doesn't).
>
> If you are aware of other issues or applications let me know.
>
> A pre-release, 2.20.01, of the next version of Spreadsheet::WriteExcel
> is now available:
>

> http://homepage.eircom.net/~jmcnamara/perl/prerel/Spreadsheet-WriteEx...

jmcnamara

unread,
Nov 6, 2007, 4:03:53 AM11/6/07
to Spreadsheet::WriteExcel

On Nov 6, 5:51 am, "rpno...@ibksoftware.com" <rpno...@ibksoftware.com>
wrote:

>
> Just tested 2.19 on my Blackberry. It works fine. I can't see my URL
> link to google maps, but I'll test that later. My Excel file has 19
> tabs with 496 rows on each tab. Slow in loading, but that is the
> download from my email server. Blackberry version 4.1.0.286

Hi,

Thanks for that. If you try the new version it may speed up loading.
It generates files with additional internal indexing that allows
applications to read the file faster. Whether or not the BlackBerry
can make use of this, or if it isn't just a server issue, I don't
know.

Either way, thanks for testing it with 2.19.

John.
--

Giulio Orsero

unread,
Nov 29, 2007, 4:45:51 AM11/29/07
to spreadsheet...@googlegroups.com
On Nov 4, 2007 11:48 PM, jmcnamara <jmcn...@cpan.org> wrote:


> The next beta iteration, 2.20.03, is now available. This adds
> increased compatibility with third party applications that read Excel
> files.
>
> The new compatibility_mode() feature is now optionally on instead of
> optionally off.


I'm testing forward/backward compatibility of my scripts.

compatibility_mode defaulting to "on" means I have to turn it off
because converting a big data set, as expected, causes the the RAM
usage to grow w/o limits (instead of topping at 144 it goes well over
250MB).

What would be the correct method to test for the compatibility_mode
feature and disable it only when it's available so that when the
script is run with an older version of the module it won't error out?

I tried playng with VERSION but I think parsing it it's too prone to
errors; I'd like to test the presence of the feature, but my eval
tests didn't work out, ie:
eval $workbook->compatibility_mode(0);
produces an error if the method is not available.

Thanks

--
giu...@pobox.com

jmcnamara

unread,
Nov 29, 2007, 5:21:44 AM11/29/07
to Spreadsheet::WriteExcel

On Nov 29, 9:45 am, "Giulio Orsero" <giul...@gmail.com> wrote:
> On Nov 4, 2007 11:48 PM, jmcnamara <jmcnam...@cpan.org> wrote:
> > The new compatibility_mode() feature is now optionally on instead of
> > optionally off.
>
> I'm testing forward/backward compatibility of my scripts.

Hi Giulio,

I'm still not sure if I will release the module to CPAN with
compatibility mode on or off. At the moment I'm leaning towards having
it off since it would have an unforeseen performance impact for large
files and also the flood of bug reports in relation to Office SP3 has
stopped. So either people aren't having as many problems as
anticipated with the SP3 patch or else they are reading the workaround
posted here.


> compatibility_mode defaulting to "on" means I have to turn it off
> because converting a big data set, as expected, causes the the RAM
> usage to grow w/o limits (instead of topping at 144 it goes well over
> 250MB).


Out of curiosity, what size files were you producing?


> What would be the correct method to test for the compatibility_mode
> feature and disable it only when it's available so that when the
> script is run with an older version of the module it won't error out?


you can determine if an object (or class) supports a method using the
UNIVERSAL::can() method:

#!/usr/bin/perl -w

use strict;
use Spreadsheet::WriteExcel;

my $workbook = Spreadsheet::WriteExcel->new('test.xls');


print "Version: ", Spreadsheet::WriteExcel->VERSION(), "\n";

if ($workbook->can('compatibility_mode')) {
print "Supports compatibility_mode()\n";
}
else {
print "Doesn't support compatibility_mode()\n";
}


__END__

Sample output:

Version: 2.19.5
Doesn't support compatibility_mode()

Version: 2.20.03
Supports compatibility_mode()

See UNIVERSAL for more details: http://search.cpan.org/~nwclark/perl-5.8.8/lib/UNIVERSAL.pm


If the next release is shipped with compatibility mode off then I
guess this won't be a problem.


John.
--

Giulio Orsero

unread,
Nov 29, 2007, 5:31:55 AM11/29/07
to spreadsheet...@googlegroups.com
On Nov 29, 2007 11:21 AM, jmcnamara <jmcn...@cpan.org> wrote:
>
> I'm still not sure if I will release the module to CPAN with
> compatibility mode on or off. At the moment I'm leaning towards having
> it off since it would have an unforeseen performance impact for large
>...

> you can determine if an object (or class) supports a method using the
> UNIVERSAL::can() method:

Thank you for the UNIVERSAL thing I didn't know about.

Users explicitly requested, and then requested again, that I produce
files with about 1 million records (split among worksheets to stay
within 65536), final size is about 210MB.


--
giu...@pobox.com

jmcnamara

unread,
Nov 29, 2007, 7:43:43 AM11/29/07
to Spreadsheet::WriteExcel
On Nov 29, 10:31 am, "Giulio Orsero" <giul...@gmail.com> wrote:
>
> Users explicitly requested, and then requested again, that I produce
> files with about 1 million records (split among worksheets to stay
> within 65536),

Hi Giulio,

It is unrealistic to expect users to have realistic expectations. :-)

It is probably a bit late now but there is an example in the distro
that splits input between several worksheets:

http://search.cpan.org/src/JMCNAMARA/Spreadsheet-WriteExcel-2.20/examples/row_wrap.pl


> final size is about 210MB.

That *is* big. The compatibility mode is probably only useful up to
about 40MB files (but it depends on the amount of available memory).

As an aside Spreadsheet::WriteExcel::Big module has the compatibility
mode off by default.


John.
--

Giulio Orsero

unread,
Nov 29, 2007, 9:37:08 AM11/29/07
to spreadsheet...@googlegroups.com
On Nov 29, 2007 1:43 PM, jmcnamara <jmcn...@cpan.org> wrote:
>
> It is probably a bit late now but there is an example in the distro
> that splits input between several worksheets:
>
> http://search.cpan.org/src/JMCNAMARA/Spreadsheet-WriteExcel-2.20/examples/row_wrap.pl

When I implemented it I followed an example you made in the archives
of this forum, it's similar to the row_wrap.pl example.

Thanks.

--
giu...@pobox.com

Reply all
Reply to author
Forward
0 new messages