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

Recent releases

  •  03 Feb 2010 12:28

    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 19:52

      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 11:00

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

        •  08 Jan 2010 09:55

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

          •  04 Jan 2010 12:08

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

            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.


            http://groups.google.com/group/spreadsheet-writeexcel/ (http://groups.google.com/group/spreadsheet-writeexcel/)


            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:


            http://tinyurl.com/7ayes (http://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 (http://groups.google.com/group/spreadsheet-writeexcel/browse_thread/thread/d2c86b846bf66d7e/) on the Google-Groups Spreadsheet::WriteExcel forum.

            http://groups.google.com/group/spreadsheet-writeexcel/browse_thread/thread/d2c86b846bf66d7e/

            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 (http://groups.google.com/group/spreadsheet-writeexcel/browse_frm/thread/f5802f5a6754d806/) 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 (http://groups.google.com/group/spreadsheet-writeexcel/).


            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 (http://tinyurl.com/7ayes).


            John.

            --


            Screenshot

            Project Spotlight

            OpenStack4j

            A Fluent OpenStack client API for Java.

            Screenshot

            Project Spotlight

            TurnKey TWiki Appliance

            A TWiki appliance that is easy to use and lightweight.