ThinkPHP使用phpword讀取模板word文件并添加表格

?1.安裝phpword包composer require phpoffice/phpword

2.模板文件結構

如上圖框住的是要替換的文本和要復制表格樣式

實現代碼

<?phpnamespace app\api\logic;use PhpOffice\PhpWord\Element\Table;
use PhpOffice\PhpWord\SimpleType\TblWidth;
use PhpOffice\PhpWord\TemplateProcessor;
class Word
{public static function test($arr,$title,$stu_name){//多行數據參考<w:br/>用于換行
//        $arr = [
//            ['id' => '1', 'value' => '單詞內容<w:br/>單詞內容<w:br/>單詞內容單詞內容單詞內容單<w:br/>詞內容單詞內容單詞內容單詞內容單詞內容單<w:br/>詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容單詞內容'],
//            ['id' => '2', 'value' => '單詞內容單詞內容單詞內<w:br/>容單詞內容單詞內容'],
//            ['id' => '3', 'value' => '單詞內容單詞<w:br/>內容單詞內容單詞內容單詞內容'],
//            ['id' => '4', 'value' => '單詞內容單詞內容單<w:br/>詞內容單詞內容單詞內容單詞內容單詞內容單<w:br/>詞內容單詞內容單詞內容<w:br/>單詞內容單詞內容單詞內容單詞內容單詞內容'],
//            ['id' => '5', 'value' => '單<w:br/>詞<w:br/>內<w:br/>容'],
//        ];//新文件名$filename = date('Ymd').substr(implode(NULL, array_map('ord', str_split(substr(uniqid(), 7, 13), 1))), 0, 8).".docx";$date = date('Y-m-d');$path = "export/word/$date/";if (!file_exists($path)) {mkdir($path, 0777, true);}//實例化, 參數傳入模板文件地址$word_template = ROOT_PATH.'public/export/test.docx'; // 使用絕對路徑// 檢查模板文件是否存在if (!file_exists($word_template)) {throw new \Exception("模板文件不存在: " . $word_template);}$templateProcessor = new TemplateProcessor($word_template);//替換(設置)變量值$array_title = ['title' => $title,'date' => $date,'num' => count($arr),'name' => $stu_name,];$templateProcessor->setValues($array_title);//生成表格$table = new Table(['borderSize' => 12, 'width' => 6000, 'unit' => TblWidth::TWIP, 'alignMent' => 'center']);$rows = count($arr);//總行數$templateProcessor->cloneRow('id', $rows);//$arr條數復制行for ($i = 0; $i < $rows; $i++) {$templateProcessor->setValue("id#" . ($i + 1), $arr[$i]['id']);//替換變量$templateProcessor->setValue("value#" . ($i + 1), $arr[$i]['value']);//替換變量}$templateProcessor->setComplexBlock('table', $table);//保存文件$templateProcessor->saveAs($path . $filename);return "/" . $path . $filename;}}

上圖是最終生成的word文件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/72363.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/72363.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/72363.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

(原創)用python語言基于paddleocr構建批量識別實現紙質和電子的增值稅專用發票程序

文章目錄 1. 說明2. 準備工作3. 代碼3.1 導入庫&#xff1a;3.2 遍歷發票指定處理方式3.3 發票識別相關函數3.4 發票字段定位函數3.6 識別記錄相關函數3.6 識別結果校驗3.7 文件預處理等其他函數3.8 main主函數 1. 說明 1.1 以paddle識別引擎為基礎的增值稅發票識別程序&#…

DeepSeek搭配Excel,制作自定義按鈕,實現辦公自動化!

今天跟大家分享下我們如何將DeepSeek生成的VBA代碼&#xff0c;做成按鈕&#xff0c;將其永久保存在我們的Excel表格中&#xff0c;下次遇到類似的問題&#xff0c;直接在Excel中點擊按鈕&#xff0c;就能10秒搞定&#xff0c;操作也非常的簡單. 一、代碼準備 代碼可以直接詢問…

解決顯示器在高刷條件下花屏的問題

起因是家里的顯示器好久沒用之后&#xff0c;100HZ的刷新率下會花屏&#xff0c;在75HZ的情況下就正常顯示&#xff0c;在網上找了一圈感覺是硬件問題解決不了 于是想了想如果我用90HZ呢&#xff1f;不過原始的情況下沒有自定義刷新率的選擇&#xff0c;不過amd和nvida控制面板…

IP-----雙重發布

目錄 6.雙重發布 1.重發布的作用 2.部署條件 1.必須存在ASBR 2.種子度量值 3.重發布的規則 4.重發布的數量 5.重發布的場景 1.場景和規則 2.直連和靜態 3.動態RIP 4.動態OSPF 5.更改開銷值 6.重發布的問題1 7.重發布的問題2 1.流量 2.前綴列表 3.偏移列表 4…

藍橋杯試題:DFS回溯

一、題目要求 輸入一個數組n&#xff0c;輸出1到n的全排列 二、代碼展示 import java.util.*;public class ikun {static List<List<Integer>> list new ArrayList<>();public static void main(String[] args) { Scanner sc new Scanner(System.in);…

Ruby基礎

一、字符串 定義 283.to_s //轉為string "something#{a}" //定義字符串&#xff0c;并且插入a變量的值 something//單引號定義變量 %q(aaaaaaaaa) // 定義字符串&#xff0c;&#xff08;&#xff09;內可以是任何數&#xff0c;自動轉義雙引號%Q("aaaaa"…

基于提示驅動的潛在領域泛化的醫學圖像分類方法(Python實現代碼和數據分析)

摘要 醫學圖像分析中的深度學習模型易受數據集偽影偏差、相機差異、成像設備差異等導致的分布偏移影響&#xff0c;導致在真實臨床環境中診斷不可靠。領域泛化&#xff08;Domain Generalization, DG&#xff09;方法旨在通過多領域訓練提升模型在未知領域的性能&#xff0c;但…

C#—Settings配置詳解

C#—Settings配置詳解 在C#項目中&#xff0c;全局配置通常指的是應用程序的設置&#xff08;settings&#xff09;&#xff0c;這些設置可以跨多個類或組件使用&#xff0c;并且通常用于存儲應用程序的配置信息&#xff0c;如數據庫連接字符串、用戶偏好設置等。 Settings配置…

國自然面上項目|基于多模態MR影像的膠質母細胞瘤高危區域定位及預后預測研究|基金申請·25-02-28

小羅碎碎念 今天和大家分享一個面上項目&#xff0c;執行年限為2019.01&#xff5e;2022.12&#xff0c;直接費用為57萬元。 膠質母細胞瘤&#xff08;GBM&#xff09;預后差且差異大&#xff0c;異質性是重要因素&#xff0c;臨床手段難評價。影像組學為異質性研究提供方法&am…

Nat Mach Intell | AI分子對接算法評測

《Nature Machine Intelligence》發表重磅評測&#xff0c;系統評估AI與物理方法在虛擬篩選&#xff08;VS&#xff09;中的表現&#xff0c;突破藥物發現效率瓶頸。 核心評測體系&#xff1a;三大數據集 研究團隊構建了三個新型測試集&#xff1a; TrueDecoy&#xff1a;含14…

安路FPGA開發入門:軟件安裝與點燈與仿真(TangDynasty ModelSim)

文章目錄 前言軟件安裝開發軟件仿真軟件 點燈測試代碼編寫與編譯引腳分配固件下載 仿真測試ModelSim添加仿真庫TangDynasty仿真設置進行仿真 后記 前言 最近因為工作需要用安路的FPGA&#xff0c;這里對安路FPGA開發相關流程做個記錄。作為測試只需要一個核心板&#xff08;我這…

千峰React:外部庫引用

flushSync強制刷新 如果不強制刷新是這樣&#xff1a;每次count在下一輪才更新 import { useState, useRef } from react import { flushSync } from react-domfunction App() {const [count, setCount] useState(0)const refuseRef(null)const handleClick () > { setCo…

防火墻旁掛組網雙機熱備負載均衡

一&#xff0c;二層交換網絡&#xff1a; 使用MSTPVRRP組網形式 VLAN 2--->SW3為主,SW4 作為備份 VLAN 3--->SW4為主,SW3 作為備份 MSTP 設計 --->SW3 、 4 、 5 運行 實例 1 &#xff1a; VLAN 2 實例 2 &#xff1a; VLAN 3 SW3 是實例 1 的主根&#xff0c;實…

結合PyMuPDF+pdfplumber,刪除PDF指定文本后面的內容

?? 一、需求場景解析 在日常辦公中,我們經常會遇到這樣的痛點: 合同處理:收到上百份PDF合同,需要找到"簽署頁"之后的內容并刪除報表加工:批量移除財務報表中的敏感數據區域文檔歸檔:快速提取技術文檔的關鍵章節傳統的手動操作方式存在三大致命缺陷: ? 耗時…

二、QT和驅動模塊實現智能家居----2、編譯支持QT的系統

因為我們的Linux內核文件不支持QT系統&#xff08;當然如果你的支持&#xff0c;完全跳過這篇文章&#xff09;&#xff0c;所以我們要從網上下載很多軟件包&#xff0c;這里直接用百問網的軟件包&#xff0c;非常方便。 一&#xff1a;Ubuntu 配置 1 設置交叉編譯工具鏈 以…

el-select的下拉選擇框插入el-checkbox

el-check注意這里要使用model-value綁定數據 <el-selectv-model"selectDevice"multiplecollapse-tags:multiple-limit"5"style"width: 200px"popper-class"select-popover-class" ><el-optionv-for"item in deviceList…

UNION 和 UNION ALL 的區別:深入解析 SQL 中的合并操作

在 SQL 的世界里&#xff0c;當我們需要合并多個查詢結果集時&#xff0c;UNION和UNION ALL是兩個常用的操作符。雖然它們的功能看起來相似&#xff0c;但實際上有著重要的區別&#xff0c;這些區別在不同的應用場景中會對查詢結果和性能產生顯著影響。本文將詳細探討UNION和UN…

5.Linux配置虛擬機

步驟一 步驟二 步驟三 步驟四 finalshell

2024華為OD機試真題-熱點網站統計(C++)-E卷-100分

2024華為OD機試最新E卷題庫-(C卷+D卷+E卷)-(JAVA、Python、C++) 目錄 題目描述 輸入描述 輸出描述 用例1 用例2 考點 題目解析 代碼 c++ 題目描述 企業路由器的統計頁面,有一個功能需要動態統計公司訪問最多的網頁 URL top N。 請設計一個算法,可以高效動態統計 …

SOUI基于Zint生成EAN碼

EAN碼廣泛應用與歐洲的零售業。包括EAN-2、EAN-5、EAN-8和EAN-12碼。分別編碼 2、5、7 或 12 位數字。此外&#xff0c;可以使用 字符將 EAN-2 和 EAN-5 附加符號添加到 EAN-8 和 EAN-13 符號中&#xff0c;就像 UPC 符號一樣。 EAN-8校驗碼計算&#xff1a; 從左往右奇數位的…