siva2sadu has asked for the wisdom of the Perl Monks concerning the following question:

Hi, I want parse the contents of word tables to excel sheet.
$Word->Selection->HomeKey(wdLine); $Word->Selection->Find->{Text} = "Heading1"; $Word->Selection->Find->execute; $Word->Selection->Copy; $Word->Selection->MoveRight(wdCell); $Word->Selection->Find->execute; $Word->Selection->Copy; $clipboard = Win32::Clipboard(); $var = $clipboard->Get();
Like this i am reading. But when field next column of heading1 is empty, it is going to the next table and not reaging other headings of the current table. Please help me.

Replies are listed 'Best First'.
Re: Parsing MS word tables using perl
by roboticus (Chancellor) on Jun 05, 2010 at 12:53 UTC

    siva2sadu:

    That's really more of a Microsoft Word question than a perl question. However, I did a quick google search and turned up a bit of information. Specifically, the article How Do I Bring a Microsoft Word Table into a DataGridView? mentions that Word has a Tables collection of all tables in the document, and it shows a bit of C# code to read all rows in the table. So you should be able to convert that into perl without too much trouble. Here's a trimmed1 version of the code from the article:

    // Get the first table of the Word Document Word.Table firstTable = this.Tables[1]; // Loop over the rows in the table foreach (Word.Row row in firstTable.Rows) { List<string> cellValues = new List<string>(); foreach (Word.Cell cell in row.Cells) { string cellContents = cell.Range.Text; // Now cellContents has the text of the current cell... } }

    HTH...

    ...roboticus

    Note [1]: I removed unnecessary stuff (i.e. Datagrid code, etc.) and it's untested, as well.

    Update: Changed footnote to use superscript to remove bogus link (used square brackets originally).