[phpword][laravel-admin]匯入文件轉html,並使用富文字編輯後匯出

it_cwc發表於2021-04-28

背景

承接上次提問 問答:[不懂就問]phpword中 IOFactory::load($paths)初始化doc檔案失敗
也不知道各位需不需要,算小弟的記錄吧

環境

    laravel 8.0 
    laravel-admin 1.8 
    PHP 7.3 
    PHPword 0.18.1

安裝就不贅述了

開發階段

匯入

  • 彈出表單使用

    • 【phpword】【laravel-admin】匯入文件轉html,並使用富文字編輯後匯出
    • 【phpword】【laravel-admin】匯入文件轉html,並使用富文字編輯後匯出
  • 檔案上傳轉換

    • 這邊測試了,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內容獲取
      // 然後可以查入到資料庫裡了

匯入結果測試

  • 【phpword】【laravel-admin】匯入文件轉html,並使用富文字編輯後匯出
  • 【phpword】【laravel-admin】匯入文件轉html,並使用富文字編輯後匯出

匯出

  • 行操作
    【phpword】【laravel-admin】匯入文件轉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); // 下載跳轉

匯出結果測試

  • 【phpword】【laravel-admin】匯入文件轉html,並使用富文字編輯後匯出

end… :blue_heart: :purple_heart: :heart: :green_heart: :sparkling_heart:

本作品採用《CC 協議》,轉載必須註明作者和本文連結
it_cwc

相關文章