php批量excel转word

假如有如下excel表格

需求是把每一行的个人信息填写到word文件里,并且每个人生成一个word文档,就像下面这样

使用php,这个需求很好实现,大约20几行代码,之前我写过一篇博客关于php解析word文档的,是用的正则表达式解析的,这次直接用个成品,phpoffice,只需要简单的引入就可以使用了,这次主要用了两个包,phpword和phpexcel,下面还是上代码,很简单都有注释,在thinkphp框架里写的,不用框架的话直接include就行。

<?php
namespace Home\Controller;
use Think\Controller;
set_time_limit(1800);
class IndexController extends Controller {
    public function docx(){
    	vendor("PhpOffice.PHPExcel.IOFactory");//导入phpexcel输入输出类
        vendor("PhpOffice.PhpWord.TemplateProcessor");//导入phpword模板类
        $sheet=\PHPExcel_IOFactory::createReader("Excel2007")->load("data.xlsx")->getActiveSheet();
        $row=$sheet->getHighestRow();//取得总行数
   		$col=$sheet->getHighestColumn();//取得总列数
        $data=[];
        for($i=0;$i<$row;$i++){
            for($j=0;$j<=4;$j++){
                $data[$i][$j]=$sheet->getCellByColumnAndRow($j, $i+1)->getValue();
            }
        }
        foreach ($data as $key => &$value) {
        	$tmp=new \PhpOffice\PhpWord\TemplateProcessor('tmp.docx');//word模板句柄
        	$tmp->setValue('name',$value[0]);//设置需要替换的值
        	$tmp->setValue('sex',$value[1]);
        	$tmp->setValue('nation',$value[2]);
        	$tmp->setValue('birthday',$value[3]);
        	$tmp->setValue('school',$value[4]);
        	if(!is_dir(iconv("utf-8","gbk","生成/"))){
        		mkdir(iconv("utf-8","gbk","生成/"),0777,true);//生成文件夹,iconv为转换编码防止文件夹乱码
        	}
        	$tmp->saveAs(iconv("utf-8","gbk","生成/").$value[0].".docx");//生成文件
        	unset($tmp);
        }
        die("success!");
    }
}

 首先还得准备相应的excel表格和word模板,word模板如下

 

运行了下,效果如下

然后可以看到相应的word文件已经生成了

 打开看一下相应的信息也填进去了

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值