Projects / Spreadsheet::WriteExcel

Spreadsheet::WriteExcel

Spreadsheet::WriteExcel is a Perl module which can be used to create native Excel binary files. Formatted text and numbers can be written to multiple worksheets in a workbook. Formulas and functions are also supported. It is 100% Perl and doesn't require any Windows libraries or a copy of Excel. It will also work on the majority of Unix and Macintosh platforms. Generated files are compatible with Excel 97, 2000, 2002, and 2003, and with OpenOffice and Gnumeric. An older version also supports Excel 5/95.

Tags
Licenses
Operating Systems
Implementation

RSS Recent releases

  •  03 Feb 2010 16:04

Release Notes: This release adds some additional formatting options for charts. It also fixes an issue in the previous version where embedded charts didn't work and gave warnings.

  •  24 Jan 2010 22:14

Release Notes: This release fixes an autofilter/repeat row name conflict error with some non-English versions of Excel. It adds additional Chart documentation and configuration.

  •  11 Jan 2010 15:12

Release Notes: This release adds support for scatter and stock style charts.

  •  08 Jan 2010 10:37

Release Notes: This release adds support for pie style charts.

  •  04 Jan 2010 15:25

Release Notes: This release adds a new feature to allow programmatically generated charts to be embedded in worksheets.

RSS Recent comments

09 Jan 2006 03:51 jmcnamara

Spreadsheet::WriteExcel update
Just a reminder that questions and discussions in relation to Spreadsheet::WriteExcel have moved to Google Groups.

groups.google.com/grou... (groups.google.com/grou...)

Release and other announcements will still continue here.

Also, if you'd care to donate to the Spreadsheet::WriteExcel project, you can now do so via PayPal:

tinyurl.com/7ayes (tinyurl.com/7ayes)

John.

--

18 Nov 2005 04:17 jmcnamara

Re: External link not working in sreadshee point to workseet genrated using WriteExcel

> when we try to use our genrated

> spreadsheet as extrenal link to other

> workbook using Excel 2002

See the response (groups.google.com/grou...) on the Google-Groups Spreadsheet::WriteExcel forum.

groups.google.com/grou...

John.

--

18 Nov 2005 02:01 hclodwal

External link not working in sreadshee point to workseet genrated using WriteExcel
We are using Spreadsheet::WriteExcel(3) version 2.12 and perl version 5.8.6 to genrate spread sheet

when we try to use our genrated spreadsheet as extrenal link to other workbook using Excel 2002

=VLOOKUP("abc",'[XYZ.xls]Margin summary detail'!$F:$M,8,0)/1000000

It will show as #N/A

but it will start working fine after we will open the genrated file and it will work fine once we open the genrated file

part of the code we use to genrate excell file is

sub create_excel {

my $out_file_path = shift;

my $csv_data = shift;

# Create a new Excel workbook

if (not defined($out_file_path) or $out_file_path =~ /(\{|\}|\$)/) {

error "File path is not valid:";

error $out_file_path if (defined $out_file_path);

return FALSE;

}

my $dirName = dirname($out_file_path);

Deshaw::GBO::Util::Mkdir($dirName);

my $workbook = Spreadsheet::WriteExcel->new($out_file_path);

if (not defined $workbook) {

error "Failed to create workbook";

return FALSE;

}

# total margin summary detail.

my $worksheet = $workbook->add_worksheet('Margin summary detail');

# Add and define formats

my $heading_format = $workbook->add_format(); # Add a format for heading

# Format the header

$heading_format->set_align('center');

$heading_format->set_text_wrap();

#$heading_format->set_bold();

# Create default formats

my $string_format = $workbook->addformat(num_format => '@', align => 'left');

my $int_format = $workbook->addformat(num_format => '#,##0;(#,##0);-', align => 'right');

my $float_format = $workbook->addformat(num_format => '#,##0.00;(#,##0.00);-', align => 'right');

our %column_format = (

0 => $string_format,

6 => $int_format,

7 => $int_format,

8 => $int_format,

9 => $float_format,

10 => $int_format,

11 => $int_format,

12 => $int_format,

13 => $string_format,

);

my $csv = Text::CSV->new();

my $row_count = 0;

my $line;

my $fh;

# Set the first row height to 33

$worksheet->set_row(0, 33);

# Set the column width to 15

$worksheet->set_column('F:Z', 15);

my @csv_arr = split("\n",$csv_data);

foreach my $line (@csv_arr) {

$line =~ s/\n|\r//g;

if ($csv->parse($line)) {

my @field_arr = $csv->fields;

my $cols = scalar(@field_arr);

my $column_count = 0;

while($column_count < $cols ) {

my $col_format = $column_format{$column_count}

unless($cols < 2);

$col_format = $heading_format if($row_count == 0);

debug($line);

$worksheet->write($row_count, $column_count,

$field_arr[$column_count],

$col_format);

$column_count++;

$col_format = undef;

}

}

$row_count += 1;

}

$workbook->close();

return TRUE;

}

06 Oct 2005 02:31 jmcnamara

Spreadsheet::WriteExcel Pre-release with Cell Comments
A pre-release of the next version of Spreadsheet::WriteExcel with support for cell comments is now available. See here (groups.google.com/grou...) for details.

John.

--

19 Sep 2005 04:16 jmcnamara

Spreadsheet::WriteExcel update
Just a reminder that questions and discussions in relation to Spreadsheet::WriteExcel have moved to Google Groups (groups.google.com/grou...).

Release and other announcements will still continue here.

Also, if you'd care to donate to the Spreadsheet::WriteExcel project, you can now do so via PayPal: here (tinyurl.com/7ayes).

John.

--

Screenshot

Project Spotlight

cciss_vol_status

A tool which reports the status of logical drives on HP Smart Arrays.

Screenshot

Project Spotlight

HTTPTunnel

A program to tunnel arbitrary TCP connections over HTTP.