in reply to Hyperlinks with win32::word::writer

Writer is painful to install. Anyway, here is working hyperlink code (after fixing syntax errors in your posted code). The mechanism to add hyperlinks is more than just STYLE - you need to use the SELECTION syntax - perhaps subclass Writer to provide more ease-of-use. The crazy NULL write seems to be required by WORD to create the hyperlink. Ayyway, this code now works for me.
use strict; use Win32::Word::Writer; my $oWriter = Win32::Word::Writer->new(); $oWriter->WriteParagraph("Testing", heading => 1); $oWriter->WriteParagraph("", style => "Heading 9"); $oWriter->NewParagraph(); $oWriter->TableBegin(); $oWriter->TableRowBegin(); $oWriter->TableColumnBegin(); $oWriter->SetBold(0); $oWriter->TableColumnBegin(); $oWriter->Write("Column 1"); $oWriter->TableColumnBegin(); $oWriter->Write("Column 2"); $oWriter->TableColumnBegin(); $oWriter->Write("URL"); my $counter = 0; my @urls = qw (http://ww.perlmonks.org http://www.perl.com http://www. +perl.org); for my $i (0..2){ $counter++; $oWriter->TableRowBegin(); for my $i (0..1){ $oWriter->TableColumnBegin(); $oWriter->Write("$counter"); } for my $u(@urls){ $oWriter->TableColumnBegin(); #$oWriter->SetStyle("hyperlink"); #$oWriter->Write("$u"); $oWriter->Write (""); # Null write, to make a selection my $sel= $oWriter->oSelection; $sel->Hyperlinks->Add( $sel->Range, $u); # $oWriter->ClearCharacterFormatting(); } } $oWriter->TableEnd(); $oWriter->SaveAs("my_file.doc");

     "For every complex problem, there is a simple answer ... and it is wrong." --H.L. Mencken

Replies are listed 'Best First'.
Re^2: Hyperlinks with win32::word::writer
by Anonymous Monk on Jun 05, 2006 at 13:44 UTC
    You're right Netwallah -- Writer is such a pain to install. I had to resort to using the CPAN shell (perl -MCPAN -e shell). Thank you guys for your help. I would never have thought about using the oSelection property. I have revised the script to create a cleaner table. You guys rock.
    use strict; use Win32::Word::Writer; my $oWriter = Win32::Word::Writer->new(); $oWriter->WriteParagraph("Testing", heading => 1); $oWriter->WriteParagraph("", style => "Heading 9"); $oWriter->NewParagraph(); $oWriter->TableBegin(); $oWriter->TableRowBegin(); #$oWriter->TableColumnBegin(); $oWriter->SetBold(0); $oWriter->TableColumnBegin(); $oWriter->Write("Column 1"); # $oWriter->TableColumnBegin(); $oWriter->Write("Column 2"); $oWriter->TableColumnBegin(); $oWriter->Write("URL"); my $counter = 0; my @urls = qw (http://ww.perlmonks.org http://www.perl.com http://www. +perl.org); for my $i (@urls){ $oWriter->TableRowBegin(); for my $j (0..1){ $counter++; $oWriter->TableColumnBegin(); $oWriter->Write("$counter"); } # for my $u(@urls){ $oWriter->TableColumnBegin(); # #$oWriter->SetStyle("hyperlink"); # #$oWriter->Write("$u"); $oWriter->Write (""); # Null write, to make a selection my $sel= $oWriter->oSelection; $sel->Hyperlinks->Add( $sel->Range, $i); # #$oWriter->ClearCharacterFormatting(); # } } $oWriter->TableEnd(); $oWriter->SaveAs("my_file.doc");