• php批量excel转word


    假如有如下excel表格

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

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

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

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

     

    运行了下,效果如下

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

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

     

     

     

  • 相关阅读:
    qml使用c++自定义listmodel数据
    React实现地图搜索
    java:BeanProperSupport实现复杂类型对象的成员访问
    无涯教程-JavaScript - LOG函数
    Ubuntu20安装docker实践纠正版
    基于时间的盲注
    css grid实现九宫格布局
    AtCoder ABC324 B~E赛后补题
    安全防御设备---防火墙2
    新基建助力智能化道路交通领域的转型发展
  • 原文地址:https://blog.csdn.net/sdxjwkq01/article/details/125533388