Forum


Replies: 4   Views: 195
How to get elements of a specific table.
Topic closed:
Please note this is an old forum thread. Information in this post may be out-to-date and/or erroneous.
Every phpdocx version includes new features and improvements. Previously unsupported features may have been added to newer releases, or past issues may have been corrected.
We encourage you to download the current phpdocx version and check the Documentation available.

Posted by neu_katayama  · 19-07-2019 - 06:17

Get each element using getWordContents.

I do not want to use [contains] to get a table from the wording in the table, but I want to get the contents of a specific table, is there a way?

Posted by admin  · 19-07-2019 - 16:05

Hello,

You need to use getWordContents. As you can read on the API page (https://www.phpdocx.com/api-documentation/docx-path/get-text-word-contents-in-docx), you can query by its position, content, attributes or even a custom XPath query. Please check the included samples in the package.

Regards.

Posted by neu_katayama  · 22-07-2019 - 00:47

thank you for your answer.

Please tell me the specific acquisition method.
I want to get only the contents of the specified table.
The wording in that table is not constant.
Therefore, [contains] can not be used.

If you need to set attributes etc with msword, please let me know.

Posted by neu_katayama  · 22-07-2019 - 02:08

-<w:tbl>
  -<w:tblPr>
    <w:tblStyle w:val="TABLECUSTOMSTYLE"/>
    <w:tblW w:w="0" w:type="auto"/>
    <w:tblInd w:w="0" w:type="dxa"/>
    <w:tblLook w:val="04A0" w:noVBand="1" w:noHBand="0" w:lastColumn="0" w:firstColumn="1" w:lastRow="0" w:firstRow="1"/>
  </w:tblPr>
  <w:tblGrid>
    <w:gridCol w:w="10763"/>
  </w:tblGrid>
  -<w:tr w:rsidR="008E34E6" w14:textId="77777777" w14:paraId="57D2E49F" w:rsidTr="008E34E6">
    +<w:tc>
  </w:tr>
</w:tbl>

I want to get the value of w: tc in wordML above.

I want to determine by table style etc. How should I specifically set [referenceNode]?

Please let me know if there is another good way.

 

$ref = array(
 'type' => 'table',
 'attributes' => array("w:val" => "TABLECUSTOMSTYLE"),
);

$now_content = $now_docx->getWordContents($ref);

 

Posted by admin  · 22-07-2019 - 09:02

Hello,

The code you are using to get a reference node by an attribute isn't correct. This sample is included in the package:

$referenceNode = array(
        'type' => 'paragraph',
    'occurrence' => 1,
    'attributes' => array('w:outlineLvl' => array('w:val' => 2)),
);

This reference node returns the first paragraph with a tag w:outlineLvl that include the attribute w:val=2. But it returns the whole paragraph, so if you use a similar code to get a table you get the whole table contents, not only the first cell.

If you get the whole table you can analyze its contents (using PHP DOM methods) using getDocxPathQuery. Using getWordContents you'd need to use a custom query, please check the included samples and the documentation about how to use custom queries. If you open a support ticket (https://www.phpdocx.com/support) and attach a DOCX sample the dev team we'll generate a custom script with a custom Xpath query.

Regards.