**
**
1.先看需求样子:
2.先用composer下载phpword到你的项目中,如果不会可以到网上搜,教程很多;
3.
引入,然后设置下全局字体字号,当然也可以不设置;然后把每个地方的单独样式设置好,留着备用;
4
循环输出要导出的内容,重点在“
”,不好用,内容总是被覆盖,就以为addtext这个方法不能像这样并列使用,后来发现原来是导出到word时候,word不识别“/
”这个换行符。
补充:使用“
$textrun->addText($i.". ".$v['title']."(".$v['laiyuan']." ".$time.")",$titleStyle);
$textrun->addText("");
$textrun->addText($v['remark'],$contentStyle);
$textrun->addText(" ");
$textrun->addLink($v['url'],$v['url'],$linkStyle);
$textrun->addText(" ");
就是这样手动写入xml格式的代码,如果你想再增加什么样式,就在已有的word上编辑好后转成xml格式的文件然后在用编辑器打开找到相应的代码放入就可以了
虽然这可能不是一个好方法,但是真的好用。。。emmmmm
再次补充:
果然经过试验,上面那个手动写入xml代码的方法不是一个好方法,所以又改进了一下
$section = $objPHPWord->addSection();
//标题样式
$titleStyle = [
'size' => 14,
'color' => '#000000',
'bold' => true,
];
//正文样式
$contentStyle = [
'size' => 12,
'color' => '#000000',
];
//链接样式
$linkStyle = [
'size' => 12,
'color' => '#0000ff',
];
//首行缩进段落
$paragraphStyleFirst = 'pfirstStyle';
$objPHPWord->addParagraphStyle($paragraphStyleFirst, array('indentation' => array('firstLine' => 460), 'lineHeight' => 1.0, 'spacing' => 120));
//不缩进段落
$noParagraphStyleFirst = 'pNofirstStyle';
$objPHPWord->addParagraphStyle($noParagraphStyleFirst, array('lineHeight' => 1.0, 'spacing' => 120));
foreach ($data as $k => $v){
$i = $k + 1;
$time = date('Y年m月d日',$v['fromtime']);
if (!empty($v['title'])) $section->addText($i.". ".str_replace(array('<', '>', '&'), array('<', '>', '&'), $v['title'])."(".$v['laiyuan']." ".$time.")",$titleStyle,$noParagraphStyleFirst);
if (!empty($v['remark'])) $section->addText(str_replace(array('<', '>', '&'), array('<', '>', '&'),$v['remark']),$contentStyle,$paragraphStyleFirst);
if (!empty($v['url'])){
$textrun = $section->addTextRun($paragraphStyleFirst);
$textrun->addLink($v['url'],str_replace('&', '&',$v['url']),$linkStyle);
}
这样就可以了,亲测可以完美下载,然后有需要注意的地方就是替换那块,要把特殊符号替换一下,否则打开的时候会报Xml parsing error 位置:部分:/word.document.xml,
行:*,列:****,其实错误都一样,就是导出内容有特殊符号,记得替换一下就ok了!!
希望对大家有帮助~~