Anahtar ve Değerler (dizi) ile bir hash'ım var. Onları bir e-tabloya bırakmak, ancak bunları düzenlemekte zorlanmak istiyorum.Perl: Verileri bir hashtan excel'e dökme
% karma
key1 -> foo bar
key2-> john adam solungaç
key3-> elma muz, mango turuncu
Kodu:
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: $!";
Akım Çıkış
sizin örnekte bazı yazım hataları vardır. Benim bir "eksik "im var ve'% hash' ve '% tools' kullanımı mantıklı değil. Onları tamir ettim ve çalıştırdım, bu da bana doğru çıktıyı verdi, ama 1. satır ve A sütunu boş. B2'de başlar, ancak tamamen doğru görünüyor. Bence senin [mcve] senin gerçek kodun başka bir şey yaptı. – simbabque
@simbabque Yazım hatalarını işaretlediğiniz için teşekkür ederiz.Onları düzelttim. Kodumu iki kez kontrol ettim ve tekrar koştum ve hala çıkış yukarıda bahsedilen akım çıkışı ile aynı. Emin değilim, ne eksik – Jill448
Bir print $ satır içerebilir. "\ n"; '$ satırının artırıldığını doğrulamak için döngünüzün içinde mi? –