背景
承接上次提問 問答:[不懂就問]phpword中 IOFactory::load($paths)初始化doc檔案失敗
也不知道各位需不需要,算小弟的記錄吧
環境
laravel 8.0
laravel-admin 1.8
PHP 7.3
PHPword 0.18.1
安裝就不贅述了
開發階段
匯入
-
檔案上傳轉換
- 這邊測試了,
doc
文件確實不支援暫時只寫了docx
檔案上傳use Illuminate\Support\Facades\Storage; // laravel檔案上傳 use App\Models; // 操作模型 use PhpOffice\PhpWord\IOFactory; // PhpWord 初始化檔案方法 use PhpOffice\PhpWord; // PhpWord
- 檔案上傳也不贅述了… 我懶~ 哎嘿~
- 替換zip服務
PhpWord\Settings::setZipClass(PhpWord\Settings::PCLZIP);
- 轉HTML
$wordfile = IOFactory::load($fileName); // 本地檔案獲取 $xmlWriter = IOFactory::createWriter($wordfile, "HTML"); // 轉換為html $html = $xmlWriter->getContent(); // html內容獲取 // 然後可以查入到資料庫裡了
- 這邊測試了,
匯入結果測試
匯出
資源引入
use PhpOffice\PhpWord\PhpWord; use PhpOffice\PhpWord\IOFactory; use PhpOffice\PhpWord\Shared\Html; use PhpOffice\PhpWord\Writer\Html as WriteHtml;
匯出下載
$phpWord = new PhpWord(); $section = $phpWord->addSection(); $html = new Html(); $doc = new \DOMDocument(); $doc->loadHTML($model->content); // 內獲取賦值 $doc->saveXml(); // 格式設定 我這邊試了只能儲存xml格式,HTML會出格式問題 $html::addHtml($section, $doc->saveXml(), true, false); // 轉換 $phpWord->save('word/'.$model->title.'.docx'); // 儲存檔案 注意許可權問題 $url = env('APP_URL').'/word/'.$model->title.'.docx'; // 儲存連結 return $this->response()->success('匯出成功')->download($url); // 下載跳轉
匯出結果測試
end…
本作品採用《CC 協議》,轉載必須註明作者和本文連結