代码:
1 import("Org.Util.PHPWord"); 2 import("Org.Util.PHPWord.IOFactory"); 3 $PHPWord = new \PHPWord(); 4 $document = $PHPWord->loadTemplate('template1.docx'); 5 6 $document->setValue('v1','Sun'); 7 $document->setValue('today','Sun'); 8 9 10 11 12 $fileName = "word报表".date("YmdHis"); 13 header("Content-type: application/vnd.ms-word"); 14 header("Content-Disposition:attachment;filename=".$fileName.".docx"); 15 header('Cache-Control: max-age=0'); 16 $objWriter = PHPWord_IOFactory::createWriter($PHPWord, 'Word2007'); 17 $objWriter->save('php://output');
导出的word文档提示损坏,不能打开。求大神解决。有没有做php的,看看代码有问题么?
项目急,求大神
请问问题解决了吗,目前遇到同样的问题找不到解答。请问你是用框架吗
我后来改成用word模板的方式导出数据下载的。没有用这种直接生成word的。
@lippor: 万分感谢您的回复,始终是没有找到错误的原因,我在自己测试用的thinkcmf的框架中是可以用的,但是移植到我的项目中导出就会出现“存在不正确的内容”。请问您所说的word 模板的方式导出数据下载具体是指什么呢。我想是不是框架设置了什么内容
@就是叫DK: 我当时的需求是要在word里有一些表格什么的内容。我在需要填充数据的地方用类似 &aa& 这样占位。然后把需要填充的数据替换到模板的这些位置。然后下载下来就好了。
@lippor: 我们的需求类似哦,请问方便发一分可以参考的源码么。因为具体来讲我不是很清楚要怎么做
@就是叫DK:
function outwordsummary(){ $request = I("request."); $table=$request["table"]; $id=$request["id"]; $data=D($table)->where("id=$id")->find(); $data=setTableNo($data); wordtemplatetest($table,$data,"表八:责任区督导工作总结"); } function wordtemplatetest($table,$data,$filename){ import("Org.Util.PHPWord"); import("Org.Util.PHPWord.IOFactory"); $PHPWord = new \PHPWord(); $tfile='word/'.$table.'.docx'; $sfile='word/files/'.iconv('utf-8', 'GB2312//IGNORE', $filename).'.docx'; $document = $PHPWord->loadTemplate($tfile); foreach($data as $key=>$value){ $document->setValue($key,iconv('utf-8', 'GB2312//IGNORE', $value)); } /*$document->setValue('content', 'Somebody someone');*/ $document->save($sfile); download_file($sfile); }
word模板中这样:${inserttime} 但是这个有很多问题需要注意,在模板中写${inserttime}的时候最好不要写错字母,写错就全部删除重新写。你百度一下吧
@lippor: 好的,请问再源代码中最后的download方法方法是你自己定义的嘛,谢谢
导出没有问题的话,如果是文件打不开,请查看zip扩展是否版本计较低,可以尝试更换php_zip.dll扩展,用较新稳定的版本,