zoukankan      html  css  js  c++  java
  • 使用PHPword中文乱码并且下载的方法

      如果你的编码格式是utf-8的话就用这个

       1.找到 Section.php 的 addText 函数

    1 $givenText = utf8_encode($text);

     改成

    1 $givenText = iconv('gbk', 'utf-8', $text);

      2.找到template.php这个文件,找到这个,把$replace = utf8_encode($replace);注释,换成 $replace =iconv('gbk', 'utf-8', $replace);

    1 public function setValue($search, $replace) {
    2         if(substr($search, 0, 2) !== '${' && substr($search, -1) !== '}') {
    3             $search = '${'.$search.'}';
    4         }
    5         
    6         if(!is_array($replace)) {
    7            // $replace = utf8_encode($replace);
    8            $replace =iconv('gbk', 'utf-8', $replace);
    9         }

      3.找到PHPWordSectionTableCell.php中的addText()方法,把这行$text = utf8_encode($text);注释掉就可以了

    4.输出的时候如果有汉字,就用这个输出

    1   $document->setValue('weekday', iconv("utf-8","gbk",$list['company_name']));

    5.保存的时候也一样

    1 $document->save( iconv("utf-8","gbk",'C:/3D定制云_'.$list['company_name'].'.docx'));

     6.下载word文档到本地

     1  header("Content-type:text/html;charset=utf-8");
     2         $filename='upload/download/3D定制云_'.$bloc['company_name'].'.docx';
     3         $file_path = iconv("utf-8","gbk",$filename);
     4         $fil_name=$filename;
     5         if (!file_exists($file_path)){
     6             echo  "没有该文件";
     7             return;
     8         }else{
     9             ob_clean();
    10             ob_start();
    11             $fp = fopen($file_path,"r");
    12             $file_size = filesize($file_path);
    13             Header("Content-type:application/octet-stream");
    14             Header("Accept-Ranges:bytes");
    15             Header("Accept-Length:".$file_size);
    16             Header("Content-Disposition:attchment; filename=".$fil_name);
    17             $buffer=1024;
    18             $file_count=0;
    19             while (!feof($fp) && $file_count<$file_size ){
    20                 $file_con=fread($fp,$buffer);
    21                 $file_count +=$buffer;
    22                 echo $file_con;
    23             }
    24             fclose($fp);
    25             ob_end_flush();
    26         }

    全部程序

     1 vendor('phpoffice/PHPWord/PHPWord');
     2         $PHPWord = new PHPWord();
     3         $dir='upload/';
     4         $word='test.docx';
     5         $document = new PHPWord_Template($dir.$word);
     6         $document->setValue('Value1', $bloc['username']);
     7         $document->setValue('Value2', $bloc['original_password']);
     8         $document->setValue('weekday', iconv("utf-8","gbk",$bloc['company_name']));
     9         $document->save( iconv("utf-8","gbk",'upload/download/3D定制云_'.$bloc['company_name'].'.docx'));
    10 
    11         header("Content-type:text/html;charset=utf-8");
    12         $filename='upload/download/3D定制云_'.$bloc['company_name'].'.docx';
    13         $file_path = iconv("utf-8","gbk",$filename);
    14         $fil_name=$filename;
    15         if (!file_exists($file_path)){
    16             echo  "没有该文件";
    17             return;
    18         }else{
    19             ob_clean();
    20             ob_start();
    21             $fp = fopen($file_path,"r");
    22             $file_size = filesize($file_path);
    23             Header("Content-type:application/octet-stream");
    24             Header("Accept-Ranges:bytes");
    25             Header("Accept-Length:".$file_size);
    26             Header("Content-Disposition:attchment; filename=".$fil_name);
    27             $buffer=1024;
    28             $file_count=0;
    29             while (!feof($fp) && $file_count<$file_size ){
    30                 $file_con=fread($fp,$buffer);
    31                 $file_count +=$buffer;
    32                 echo $file_con;
    33             }
    34             fclose($fp);
    35             ob_end_flush();
    36         }
    人生得意须尽欢,莫使金樽空对月.
  • 相关阅读:
    6.素数和(素数的判断)
    6.素数和(素数的判断)
    5.明明的随机数(桶排序经典例题)
    5.明明的随机数(桶排序经典例题)
    5.明明的随机数(桶排序经典例题)
    5.明明的随机数(桶排序经典例题)
    Algs4-1.2.11根据Date的API实现一个SmartDate类型
    Algs4-1.2.10编写一个类VisualCounter
    Algs4-1.2.9使用Counter统计BinarySearch检查的key个数
    Algs4-1.2.8引用型变量赋值-数组复制
  • 原文地址:https://www.cnblogs.com/luojie-/p/7704614.html
Copyright © 2011-2022 走看看