work.log

元エンジニアの備忘録的ブログ

Spreadsheet::WriteExcel の簡単な使い方

投稿:2013-02-12 19:30  更新:

みんな大好き Excel ファイルを perl で書くメモ。

perl モジュールの Spreadsheet::WriteExcel を使います。

書いたコードはこんな感じ。

#!/usr/bin/perl

use strict;
use warnings;

use Spreadsheet::WriteExcel;

    my $file = "dir/perl.xls";
    my $font_name = 'MS UI Gothic';
    my $font_size = '11';

    my $book  = Spreadsheet::WriteExcel->new("$file");
    my $sheet = $book->add_worksheet();

    my $format0 = $book->add_format(
                                     font   => $font_name,
                                     size   => $font_size,
                                     bold   => 1,
                                     border => 1,
                                     valign => 'vcenter',
                                     align  => 'center'
                                   );

    my $format1 = $book->add_format(
                                     font   => $font_name,
                                     size   => $font_size,
                                     bold   => 1,
                                     border => 1,
                                     valign => 'vcenter',
                                     align  => 'center'
                                   );

    my $x = '0';
    my $y = '0';

    $sheet->merge_range( $x, $y, $x, $y + 2, "write start", $format0 );
    $x++;

    for (my $i = '0'; $i <= '2'; $i++ ) {

        for (my $j = '1'; $j <= '20'; $j++ ) {

            $sheet->write( $x, $y + $i, $j, $format1 );
            $x++;

        }

        $x = '1';

    }


    $book->close();

exit;

これを実行するとこんなやつができます。

■ perl.xls
perl_excel

Excel の行は $x, 列は $y で指定してます。 A1 は x=0, y=0、B1 は x=0, y=1 って感じです。

セルの結合は、始点 ($x, $y,) と 終点 ($x, $y + 2) のように指定。

最初、セルの位置を数字で考えるのに戸惑ったけど慣れれば簡単。

便利!!