I guess these will just be CR/NL characters.  You should be able to strip them 
in Perl, e.g. with

 

    $wordcell = $tbl->Cell($row,$col)->Range->{Text};
    $wordcell =~ s/[\x00-\x1f]//g;

    $sheet->Cells($row,$col)->{Value} = $wordcell;



Cheers,

-Jan

 

From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of
jagdish eashwar
Sent: May 11, 2007 6:13 PM
To: perl-win32-users@listserv.activestate.com
Subject: Win32::OLE - filtering out ms word formatting characters

 

Hi,

I am attempting to transfer data from a word table to Excel using Win32::OLE. I 
am able to do it with the following piece of code,
but I am getting two little boxes after the text in each of the Excel cells. I 
presume these are Word formatting characters. How can
I filter these out? I am using a test  Word table of 5 rows and 5 columns.  

I have come across suggestions that one should save the Word file as an html 
file first. I did that and ran the program again after
changing the input file name to tesfile.mht, but I am getting the same results. 
Perhaps I have to use some other module like
HTML::PARSER. Isn't there some way I can do the filtering through Win32::OLE 
itself?

 
use warnings;
use strict;


# INVOKE WIN32::OLE AND OPEN WORD AND EXCEL FILES 
#================================================

my($Word,$wordfile,$doc,$tbl,$wordcell);
my($Excel,$excelfile,$book,$sheet,$excelcell);
my($row,$col);

use Win32::OLE qw(in with);
use Win32::OLE::Variant; 
use Win32::OLE::NLS qw(:LOCALE :DATE);
use Win32::OLE::Const 'Microsoft Excel';
use Win32::OLE::Const 'Microsoft Word';
use Win32::OLE::Const 'Microsoft Office';

$Win32::OLE::Warn = 3; # Die on Errors. 

$wordfile = 'E:/jag/word_perl/testfile.doc';

$Word = Win32::OLE->GetActiveObject('Word.Application')
        || Win32::OLE->new('Word.Application', 'Quit');

$doc = $Word->Documents->Open($wordfile); 

$tbl = $doc->Tables(1);

$excelfile = 'E:/jag/word_perl/testfile.xls';

$Excel = Win32::OLE->GetActiveObject('Excel.Application')
        || Win32::OLE->new('Excel.Application ', 'Quit');

$book = $Excel->Workbooks->Open($excelfile);

$sheet = $book->Worksheets("Sheet1");


# TRANSFER DATA
#==============

foreach $row(1..5) {

foreach $col(1..5) {

$wordcell = $tbl->Cell($row,$col)->Range->{Text};

$sheet->Cells($row,$col)->{Value} = $wordcell;

    }
    }

$doc->Save;
$doc->Close;
$book->Save; 
$book->Close;



_______________________________________________
Perl-Win32-Users mailing list
Perl-Win32-Users@listserv.ActiveState.com
To unsubscribe: http://listserv.ActiveState.com/mailman/mysubs

Reply via email to