PHPWORD 实现单元格内同一行文字设置不同的样式比如不同颜色不同大小粗细是否斜体等等

PHPWORD 实现单元格内同一行文字设置不同的样式比如不同颜色不同大小粗细是否斜体等等

PHPWORD这个问题困扰了我好几天,做过PHPExcel的实现方法,在PHPExcel中内置了富文本对象,直接创建就可以了,可以参考我另写的一篇PHPExcel的文章

在PHPWORD里没有提供富文本对象的功能,所以它的表格的某个单元格内没有办法采用富文本对象的方式,按照文本框的方式理论上要想实现的话采用:
$cell = $table->addCell(2000);
$catname = $cell->addText(‘普通样式’, $fontStyleb);
$catname = $cell->addText(‘特殊1样式’, $fontStyleb1);
$catname = $cell->addText(‘特殊2样式’, $fontStyleb2);

但这种方法不知道为什么虽然内容确实在同一个单元格内,但是每次addText都会另起一行,导致这3个字符串没有在同一行。查阅各种文档,翻墙上谷歌都没找到解决办法,偶然间看到有个文章虽然他是在同一个单元格内实现的不同行的不同样式,但是我发现他代码里用了一个 <w:br/> 这个用来换行,我就想
在html是换行标签,这里用了w:应该是phpword里支持的某种标签格式。所以我就像是不是可以用这种标签来设置文字的属性,于是各种查资料各种群里问,最后终于得知这是 wordxml 标签的格式。于是开始看 wordxml 的资料,还发现你在word中把想要生成的最终的样式文档可以用来另存为 Word XML 文档(*.xml) 。我们生成之后就会得到一个用wordxml格式编写的文档,你再参考里面你需要的样式的部分代码,提取出来就可以实现了,比如:
$cell = $table->addCell(2000);

    $cell->addText('<w:r w:rsidRPr="00A23160"><w:rPr><w:rFonts w:eastAsia="Garamond"/><w:b/></w:rPr><w:t xml:space="preserve">'.$namestart.'</w:t></w:r>'.'<w:r w:rsidRPr="00A23160"><w:rPr><w:rFonts w:eastAsia="Garamond"/><w:b/><w:i/><w:iCs/></w:rPr><w:t>Walk For Giants</w:t></w:r>'.'<w:r w:rsidRPr="00A23160"><w:rPr><w:rFonts w:eastAsia="Garamond"/><w:b/></w:rPr><w:t xml:space="preserve">'.$namelast.'</w:t></w:r>');

这样只用一个addText就可以了,这样就不会出现换行的情况了。
我这个代码中
<w:r w:rsidRPr=“00A23160”><w:rPr><w:rFonts w:eastAsia=“Garamond”/><w:b/><w:i/><w:iCs/></w:rPr><w:t>Walk For Giants</w:t></w:r>
这里面表示Walk For Giants这个字符串的字体为Garamond加粗还是斜体,具体可以参考wordxml文档和你把doc文档另存为xml文档的代码用来分析具体需求。思路就是这个思路。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值