У меня есть хэш с ключом и значениями (массив). Я хочу сбросить их в электронную таблицу, но с трудом их организовать.Perl: Дамп данных с хэша в excel
% хэш
key1 -> 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 и столбец А пустые. Он начинается с B2, но выглядит совершенно правильно. Я думаю, что ваш [mcve] делает что-то еще, как ваш настоящий код. – simbabque
@simbabque Спасибо за указание опечаток.Я их исправил. Я дважды проверил свой код и снова побежал, и все же результат такой же, как и текущий вывод, упомянутый выше. Не уверен, что мне не хватает – Jill448
Можете ли вы включить строку 'print $. "\ n"; 'внутри вашего цикла, чтобы убедиться, что' $ row' не увеличивается? –