/ / Jak mogę dodać hiperłącza w array_ref w Arkuszu kalkulacyjnym :: WriteExcel? - perl, excel, arkusz kalkulacyjny

Jak mogę dodać hiperłącza w tablicy array_ref w arkuszu kalkulacyjnym :: WriteExcel? - perl, excel, arkusz kalkulacyjny

Chcę napisać odwołanie do tablicy w programie Excel

@eec =  (
["maggie", "milly", "molly", "may"  ],
[13,       14,      15,      16     ],
["shell",  "star",  "crab",  "stone"]
);

$worksheet->write_col("A1", @eec);

Ale moim problemem jest to, że chcę osadzaj także hiperłącza.

Wiem, jak dodać hiperłącze do określonej etykiety, np.

$worksheet->write("A4",  "http://www.perl.com/", "Perl", $format);

ale co powinienem zrobić, aby pokazać hiperłącze, aby powiedzieć dalej etykieta „may"?

po więcej szczegółów zobacz Przykład użycia modułu Spreadsheet :: WriteExcel do zapisu tablic danych 1D i 2D.

Odpowiedzi:

1 dla odpowiedzi № 1

Metoda write () w Spreadsheet :: WriteExcel to a opakowanie składniowe dla wielu innych metod.

Ogólnie, jeśli nie robi tego, co chcesz, istnieją dwa rozwiązania: użyj metody zawiniętej, której potrzebujesz jawnie, lub zmodyfikuj zachowanie metody write (), aby dostosować ją do swoich potrzeb.

Jeśli pierwszy przypadek, wystarczy rozwinąć niejawną pętlę, którą write () daje dla zagnieżdżonych danych. Coś takiego:

#!/usr/bin/perl

use strict;
use warnings;
use Spreadsheet::WriteExcel;

my $workbook  = Spreadsheet::WriteExcel->new( "example.xls" );
my $worksheet = $workbook->add_worksheet();


my @eec = (
[ "maggie", "milly", "molly", "may"   ],
[ 13,       14,      15,      16      ],
[ "shell",  "star",  "crab",  "stone" ]
);


my $row = 0;

for my $aref ( @eec ) {

my $col = 0;

for my $token ( @$aref ) {

if ( $token eq "may" ) {
$worksheet->write_url( $row, $col, "http://foo.com", $token );
}
else {
$worksheet->write( $row, $col, $token );
}

$col++;
}

$row++;
}

__END__

W drugim przypadku możesz zmodyfikować write () za pomocą metody add_write_handler (). Spójrz na dokumentacja i przykłady. Jest to kategoria nieco zaawansowana, więc jeśli jesteś nowy w Spreadsheet :: WriteExcel, użyj prostszej metody powyżej.


0 dla odpowiedzi nr 2

AFIU w Spreadsheet::WriteExcel nie ma metod formatowania adresów URL do późniejszego zapisu, więc najprostszym sposobem jest dodanie adresów URL bez etykiet wewnątrz tablic, ponieważ:

@eec =   (
["maggie", "milly", "molly", "http://www.perl.com/"  ],
[13,       14,      15,      16     ],
["shell",  "star",  "crab",  "stone"],
);

Lub napisz na określoną komórkę za pomocą $worksheet->write_url metoda.