zoukankan      html  css  js  c++  java
  • php解决word合并问题

    目前碰见一个问题 需要把多个word进行合并,但是呢在合并过程中发现换行的问题出现,因为合并是基于word的xml来的
    所以分析xml的问题

    思路如下:
    将多个xml读取到一个数组里面截取body部分,然后替换中间多余的段落行为空,组合成一个大的body,然后追加到第一个word里面

    组件用的是tbszip 网上自己下载

    合并10个word代码如下:

    public function gettests()
        {
            include_once(APPPATH.'/libraries/tips/tbszip.php');
    
            $zip = new clsTbsZip();
            $path=APPPATH.'data/words/';
            $filelist=scandir($path);
    
    
    
             foreach($filelist as $ks=>$vs) {
                if ($vs=='.' || $vs=='..' || $vs=='.DS_Store' || $vs=='0.docx') {
                    continue;
                }
                $zip->Open($path.$vs);
                $content1 = $zip->FileRead('word/document.xml');
                $zip->Close();
    
               
                $p = strpos($content1, '<w:body');
                if ($p===false) exit("失败");
                $p = strpos($content1, '>', $p);
                $content1 = substr($content1, $p+1);
                $p = strpos($content1, '</w:body>');
                if ($p===false) exit("失败");
                $content1 = substr($content1, 0, $p);
                $strs='<w:p><w:pPr><w:rPr><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p><w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p/><w:p/><w:p><w:r><mc:AlternateContent>';
                $oldstrs='<w:p><w:pPr><w:rPr><w:sz w:val="21"/><w:szCs w:val="21"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p/><w:p><w:pPr><w:rPr><w:rFonts w:ascii="Arial" w:hAnsi="Arial" w:cs="Arial"/></w:rPr></w:pPr></w:p><w:p/><w:p/><w:p/><w:p><w:r><mc:AlternateContent>';
                $content1=str_replace($strs,$oldstrs,$content1);
                $contents[]=$content1;
                
            }
    
    
           
               
    
                $zip->Open($path."/0.docx");
                $content2 = $zip->FileRead('word/document.xml');
               
           
                $p = strpos($content2, '</w:body>');
                if ($p===false) exit("失败");
                $content2 = substr_replace($content2, implode('',$contents), $p, 0);
                $zip->FileReplace('word/document.xml', $content2, TBSZIP_STRING);
                
                $zip->Flush(TBSZIP_FILE, APPPATH.'data/merges/merges.docx');
    
            
        }
    
  • 相关阅读:
    文献阅读方法 & 如何阅读英文文献
    科研方法
    水熊虫
    表达谱(DGE)测序与转录组测序的差别
    单细胞测序
    SGE:qsub/qstat/qdel/qhost 任务投递和监控
    统计分布汇总 | 生物信息学应用 | R代码 | Univariate distribution relationships
    JELLYFISH
    外泌体
    CDS & ORF & 启动子 & 终止子 & 转录因子 & 基因结构 & UTR
  • 原文地址:https://www.cnblogs.com/mengluo/p/15669780.html
Copyright © 2011-2022 走看看