私はキーと値(配列)を持つハッシュを持っています。私はそれらをスプレッドシートに捨てたいが、それらを整理するのが難しい。Perl:ハッシュのデータをExcelにダンプする
%ハッシュ
キー1 - > fooのバー
key2->ジョン・アダムズ鰓
key3->アップルバナナマンゴーオレンジ
コード:
use strict;
use warnings;
use Excel::Writer::XLSX;
my $pattern = "BEGIN_";
my $format;
my @keys = qw(key1 key2 key3);
foreach my $key(@keys){
open my $fh, "<","filename.txt" or die $!;
while (<$fh>) {
if (/$pattern/) {
push(@matching_lines, $_);
}
}
$hash{$key} = [@matching_lines] ;
for (@matching_lines) { $_ = undef } ; #Emptying the array contents,to reuse it for for all the other keys
}
my $workbook = Excel::Writer::XLSX->new('c:\TEMP\filename.xlsx');
if (not defined $workbook)
{
die "Failed to create spreadsheet: $!";
}
my $worksheet = $workbook->add_worksheet();
# Add and define a format
$format = $workbook->add_format();
$format->set_bg_color('yellow');
my $row = 1;
my $col = 0;
foreach my $k (keys %hash)
{
$worksheet->write($row, $col, $k, $format); # title
$worksheet->write_col($row+1, $col, $hash{$k}); #value
$col++;
}
$workbook->close() or die "Error closing file: $!";
電流出力
はあなたの例では、いくつかのタイプミスがあります。 'my'が欠けていて、'%hash 'と '%tools'の使用は意味がありません。私はそれらを修正し、それを実行し、正しい出力を得ましたが、行1と列Aは空です。それはB2から始まりますが、完全に正しいと思われます。私はあなたの[mcve]があなたの本当のコードとして何かをしていると思います。 – simbabque
@simbabqueタイプミスを指摘してくれてありがとう。私はそれらを訂正しました。私は自分のコードをダブルチェックして再度実行しましたが、出力は上記の出力と同じです。わからない、何が足りないのですか? – Jill448
'print $行を含めることができますか? "\ n"; 'あなたのループの中で、' $ row'がインクリメントされていないことを確認しますか? –