專案:問卷
需求:WORD 匯入問卷
背景:營運那裡有幾百個WORD 格式問卷,如果去後台手動錄入,無疑工作量很大,希望能直接導入。
心情:接到需求之後五味雜陳,因為以前做過 excel 導入,而且有現成的插件,程式碼也是一搜尋一堆。
word 導入無疑涉及到了知識盲點,但是需求就在那裡,又懟不過產品同學!只能硬著頭皮上了。
困難:word 不好讀取內容,內容讀出來不好結構化。
解決問題思路:
先讀取 WORD, 再說怎麼結構化。
讀取 WORD:
一開始想著用 PHPWORD, 畢竟 PHPOFFICE 這麼成熟的外掛應該可以直接讀取到 WORD 內容吧。
然而現實很骨感,找遍了文件並沒有找到直接讀取到 WORD 內容的方法。 PHPWORD 只提供了把 WORD 轉換成 HTML,TDF 的方法。
轉換思路:
既然不能讀取WORD, 那我可以讀取HTML, 只要將WORD 轉換成HTML 就可以了,然後讀取HTML 內容就行。
程式碼:
<?php namespace App\Console\Commands; use Illuminate\Console\Command; use PhpOffice\PhpSpreadsheet\Reader\Html; use PhpOffice\PhpWord\Reader\Word2007; class Test extends Command { /** * The name and signature of the console command. * * @var string */ protected $signature = 'word'; /** * The console command description. * * @var string */ protected $description = 'word'; /** * Create a new command instance. * * @return void */ public function __construct() { parent::__construct(); } /** * Execute the console command. * * @return int */ public function handle(Word2007 $word) { //WORD转换HTML $result=$word->load(storage_path('测试.docx')); $write=new \PhpOffice\PhpWord\Writer\HTML($result); $write->save(storage_path().'/测试.html'); //读取HTML内容 $document=new \DOMDocument(); $document->loadHTML(file_get_contents(storage_path('测试.html'))); $html=simplexml_import_dom($document); dd((array)$html->body); } }
開始測試:新測試.docx
測試.docx 內容:
執行腳本:
php artisan word
結果:
#以上是用PHP換個思路讀取WORD內容的詳細內容。更多資訊請關注PHP中文網其他相關文章!