批量替换word模板,并解决中文乱码问题

该博客介绍了一个使用PHPWord库来批量替换Word文档模板内容的示例,同时通过iconv函数处理中文乱码问题。文章中展示了如何从数据库获取数据,然后将这些数据插入到Word模板的指定位置,最后保存为新的Word文档。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

require_once './lib/word/PhpWord.php';
require_once './lib/word/PHPWord/IOFactory.php';
$PHPWord = new  PHPWord();
$selsct = Weifanggaizao::find("id >= 1")->order("id ASC")->getAll();

foreach ($selsct as $selscts):       
        $date = strtotime(substr($selscts->sid,6,8));       
        $today = strtotime('today');
        $diff = floor(($today-$date)/86400/365);
        $age = strtotime(substr($selscts->sid,6,8).'+'.$diff.'years')>$today?($diff+1):$diff;

//载入模板文件
$document = $PHPWord->loadTemplate('./docs/aq1.docx');

//替换Word模板文件中的一处内容,这里如果要显示中文,则必须使用iconv函数
$document->setValue('name', iconv('utf-8', 'GB2312//IGNORE', $selscts->name));
$document->setValue('xing_zc', iconv('utf-8', 'GB2312//IGNORE', $selscts->xing_zheng_cun));
$document->setValue('cun_xz', iconv('utf-8', 'GB2312//IGNORE', $selscts->cun_xiao_zu));

$document->setValue('xiang_z', iconv('utf-8', 'GB2312//IGNORE', $selscts->xiang_zhen));
$document->setValue('nong_hxz', iconv('utf-8', 'GB2312//IGNORE', $selscts->nong_hu_ping_kun_xing_zhi));
$document->setValue('yfwmj', iconv('utf-8', 'GB2312//IGNORE', $selscts->yuan_fang_wu_mian_ji));

$document->setValue('sex', iconv('utf-8', 'GB2312//IGNORE', $selscts->sex));
$document->setValue('age', iconv('utf-8', 'GB2312//IGNORE', $age));
$document->setValue('jtrk', iconv('utf-8', 'GB2312//IGNORE', $selscts->jia_ting_ren_kou));

$document->setValue('sid', iconv('utf-8', 'GB2312//IGNORE', $selscts->sid));
$document->setValue('tel', iconv('utf-8', 'GB2312//IGNORE', $selscts->tel));
$document->setValue('xfwmj', iconv('utf-8', 'GB2312//IGNORE', $selscts->xian_fang_wu_mian_ji));

$document->setValue('gzxs', iconv('utf-8', 'GB2312//IGNORE', $selscts->gai_zao_xing_shi));
$document->setValue('yikt', iconv('utf-8', 'GB2312//IGNORE', $selscts->yi_ka_tong));
$filename = './docs/zj/'.$selscts->id.iconv('utf-8', 'GB2312//IGNORE', $selscts->name).'.docx';
//保存Word文档
$document->save($filename);
endforeach;

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值