为了账号安全,请及时绑定邮箱和手机立即绑定

如何通过phpword库读取表格单元格内容

如何通过phpword库读取表格单元格内容

PHP
撒科打诨 2023-09-15 10:14:42
这是我目前的代码$phpWord = \PhpOffice\PhpWord\IOFactory::load($source);$sections = $phpWord->getSections();foreach ($sections as $s) {    $els = $s->getElements();    foreach ($els as $e) {        switch (get_class($element)) {            case 'PhpOffice\PhpWord\Element\TextRun':                $this->logger->debug("TextRun");                $this->getTextFromTextRun($element);                break;            case 'PhpOffice\PhpWord\Element\Table':                $this->logger->debug("Table");                $this->iterateOverRows($element);                break;        }    }}private function getTextFromTextRun($element) {    for ($index = 0; $index < $element->countElements(); $index++) {        $textRunElement = $element->getElement($index);        $text = $textRunElement->getText();        if (strlen($text) > 0) {            $this->logger->debug("TextRun Text: " . $text);        }    }}private function iterateOverRows($table) {    $rows = $table->getRows();    foreach ($rows as $row) {        foreach ($row->getCells() as $cell) {            // What to do here???        }    }}我不知道如何从单元格中获取内容?这些是单元对象中可用的 getter 方法:获取评论范围结束获取评论范围开始获取文档部分获取文档部分ID获取元素获取元素Id获取元素索引获取元素获取嵌套级别获取父级获取PHPWord获取关系Id获取SectionId获取样式获取轨迹更改获取宽度
查看完整描述

1 回答

?
阿晨1998

TA贡献2037条经验 获得超6个赞

已经在这里解决了这个问题:


private function iterateOverRows($table) {

    $rows = $table->getRows();

    foreach ($rows as $row) {

        foreach ($row->getCells() as $cell) {

            $els = $cell->getElements();

            foreach ($els as $e) {

                $this->switchElements($e);

            }

        }

    }

}



private function switchElements($element) {

    switch (get_class($element)) {

        case 'PhpOffice\PhpWord\Element\TextRun':

            $this->getTextFromTextRun($element);

            break;


        case 'PhpOffice\PhpWord\Element\Table':

            $this->iterateOverRows($element);

            break;


        default:

            break;

    }

}



private function getTextFromTextRun($element) {

    for ($index = 0; $index < $element->countElements(); $index++) {

        $textRunElement = $element->getElement($index);


        switch (get_class($textRunElement)) {

            case 'PhpOffice\PhpWord\Element\Text':

            case 'PhpOffice\PhpWord\Element\TextRun':

                $text = $textRunElement->getText();

                if (strlen($text) > 0) {

                    $this->logger->debug("Text: " . $text);

                    $this->getFont($textRunElement);

                }

                break;


            case 'PhpOffice\PhpWord\Element\TextBreak':

                break;


            default:

                break;

        }

    }

}



查看完整回答
反对 回复 2023-09-15
  • 1 回答
  • 0 关注
  • 55 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信