SpreadSheet::WriteExcelを使用している場合は、ワークシートの名前をメソッドadd_worksheet
の最初のパラメーターとして指定できます。これは、ドキュメントが言うことです:
$worksheet1 = $workbook->add_worksheet(); # Sheet1
$worksheet2 = $workbook->add_worksheet('Foglio2'); # Foglio2
$worksheet3 = $workbook->add_worksheet('Data'); # Data
$worksheet4 = $workbook->add_worksheet(); # Sheet4
したがって、あなたがやりたいことはおそらく次のようなものです:
while (my $res = $dbh->fetchrow_hashref) {
my $worksheet = $workbook->add_worksheet($res->{'customerName'});
# do stuff with that sheet
}
更新: Spreadsheet::ParseExcel のみを使用しているため、ここに別のアイデアがあります。名前のセッター メソッドがないため、回避策を見つけるために詳しく調べてみましょう。
Spreadsheet::ParseExcel::Worksheetのコードは、ワークブック オブジェクトの名前がどのように格納されるかを示しています。
###############################################################################
#
# get_name()
#
# Returns the name of the worksheet.
#
sub get_name {
my $self = shift;
return $self->{Name};
}
ワークシートオブジェクトを介してキーNameに直接アクセスできます。
$worksheet->{'Name'} = $res->{'customerName'};
免責事項:特にオブジェクトのソースを制御できない場合は、オブジェクトの内部値に干渉しないでください。内部構造は将来のリリースで変更される可能性があり、コードが壊れる可能性があります!