今天发现以前合并单元格并没有生效,经过研究发现已下结论:表格的样式宽度支持四种 NIL、TWIP、AUTO、PERCENT 分别代表无宽度、TWIP word基本单位、自动、百分比

百分比是 1% 代表50份 TWIP

合并单元格,并不会自动实现自动宽度,比如两行三列单元格, 合并第一行前两列,最终得到的是第一行两个cell,第一个cell和原第一个cell宽度相等

如果想要合并单元格 且保证最终合并单元格 的宽度和我们想要的宽度一致,唯一的办法是设置表格宽度后,给每行里的每个单元格设置宽度, 如果设置百分比, 总table 占文档100% 设为5000,然后按照每个单元格自己想要的百分比去设置N*50

合并单元格是通过设置cell的样式实现['gridSpan' => 2, 'valign' => 'center']/*

* 3. colspan (gridSpan) and rowspan (vMerge)

* ---------------------

* | | B | |

* | A |--------| E |

* | | C | D | |

* ---------------------

*/

$section->addPageBreak();

$section->addText('Table with colspan and rowspan', $header);

$fancyTableStyle = array('borderSize' => 6, 'borderColor' => '999999');

$cellRowSpan = array('vMerge' => 'restart', 'valign' => 'center', 'bgColor' => 'FFFF00');

$cellRowContinue = array('vMerge' => 'continue');

$cellColSpan = array('gridSpan' => 2, 'valign' => 'center');

$cellHCentered = array('alignment' => \PhpOffice\PhpWord\SimpleType\Jc::CENTER);

$cellVCentered = array('valign' => 'center');

$spanTableStyleName = 'Colspan Rowspan';

$phpWord->addTableStyle($spanTableStyleName, $fancyTableStyle);

$table = $section->addTable($spanTableStyleName);

$table->addRow();

$cell1 = $table->addCell(2000, $cellRowSpan);

$textrun1 = $cell1->addTextRun($cellHCentered);

$textrun1->addText('A');

$textrun1->addFootnote()->addText('Row span');

$cell2 = $table->addCell(4000, $cellColSpan);

$textrun2 = $cell2->addTextRun($cellHCentered);

$textrun2->addText('B');

$textrun2->addFootnote()->addText('Column span');

$table->addCell(2000, $cellRowSpan)->addText('E', null, $cellHCentered);

$table->addRow();

$table->addCell(null, $cellRowContinue);

$table->addCell(2000, $cellVCentered)->addText('C', null, $cellHCentered);

$table->addCell(2000, $cellVCentered)->addText('D', null, $cellHCentered);

$table->addCell(null, $cellRowContinue);

自己做的$table = new Table(array(

'borderSize' => 6,

'borderColor' => 'black',

'width' => 5000,

'unit' => TblWidth::PERCENT,

'align' => 'center',

));

$header_style = [

'bold' => true,

'size' => 9

];

$paragraphStyle = [

'align'=>'center',

];

$fontStyle = [

'size' => 9,

];

$table->addRow();

$table->addCell(39*50)->addText('名称', $header_style, $paragraphStyle);

$table->addCell(3*50)->addText('申请号', $header_style, $paragraphStyle);

$table->addCell(3*50)->addText('类型', $header_style, $paragraphStyle);

$table->addCell(14*50)->addText('缴费年份', $header_style, $paragraphStyle);

$table->addCell(26*50)->addText('缴纳年费日期范围', $header_style, $paragraphStyle);

$table->addCell(3*50)->addText('年费', $header_style, $paragraphStyle);

$table->addCell(10*50)->addText('滞纳金', $header_style, $paragraphStyle);

$table->addCell(6*50)->addText('滞纳金绝限日', $header_style, $paragraphStyle);

$table->addCell(6*50)->addText('维护费', $header_style, $paragraphStyle);

$total = 0;

if($cases){

foreach($cases as $key=>&$value){

$table->addRow();

$table->addCell(39*50)->addText($value['name'], $fontStyle);

$table->addCell(3*50)->addText($value['apply_no'], $fontStyle);

$table->addCell(3*50)->addText($value['type'], $fontStyle);

$table->addCell(14*50)->addText($value['to_year'], $fontStyle);

$table->addCell(26*50)->addText($value['year_fee_area'], $fontStyle);

$table->addCell(3*50)->addText((int)$value['year_fee'], $fontStyle);

$table->addCell(10*50)->addText((int)$value['late_fee'], $fontStyle);

$table->addCell(6*50)->addText($value['late_fee_end'], $fontStyle);

$table->addCell(6*50)->addText($value['service_price'], $fontStyle);

$total+= (int)($value['year_fee'] + (int)$value['late_fee'] + (int)$value['service_price']);

}

}

$table->addRow();

$table->addCell(94*50, ['valign'=>'center', 'gridSpan' => 8, 'unit'=>'pct'])->addText('合计', $header_style, $paragraphStyle);

$table->addCell(6*50, ['unit'=>'pct'])->addText($total, $header_style, $paragraphStyle);

$templateProcessor->setComplexBlock('table', $table);

从而实现了动态生成word中带合并单元格(汇总统计)的功能

参考官方sample Sample_09_Tables.php如果模板文档里有多个同名的变量, 需要$templateProcessor->setComplexValue('company', new Text($config['company'])); $templateProcessor->setComplexValue('company', new Text($config['company'])); 多次

php表格合并_phpword 合并单元格的坑相关推荐

  1. html怎么把excel表格合并单元格,Excel中如何快速合并多个单元格

    Excel是Microsoft为使用Windows和Apple Macintosh操作系统的电脑编写的一款电子表格软件.当我们制作表格中重复信息过多,通常会把重复信息的单元格进行合并.下面就给大家介绍 ...

  2. Excel表格中多个文本内容快速合并到一个单元格内

    Excel表格中多个文本内容快速合并到一个单元格内 目录 Excel表格中多个文本内容快速合并到一个单元格内 1.在合并单元格内输入"=PHONETIC()"函数 2.框选需要合并 ...

  3. 表格的建立与单元格的合并

    表格的建立与单元格的合并 如下图 如果要建立这样一个目标表 首先建立表格的主要标签以及属性有如下 <!-- table表格 tr行(th指的是表头的行)td定义单元格 --> <!- ...

  4. 【element-ui】 el-table 表格动态合并相同数据单元格最全教程,可指定列+自定义合并条件,附完整代码

    el-table合并单元格 1.固定合并 官方挺提供的合并具体某行列的方法:el-table合并行或列 通过给table传入span-method方法可以实现合并行或列,方法的参数是一个对象,里面包含 ...

  5. 表格怎么合并两列数据php,怎么合并两列单元格的文字

    合并两列单元格的文字的方法:首先打开一个excel表:然后选择一个要放合并之后内容的单元格,并在单元格中输入公式"=A1&B1()":最后按Enter回车键即可. 本文操作 ...

  6. 实现前台表格中相同数据单元格的合并

    前些天接到组长分配的任务,让我这个小菜鸟实现单元格的合并.刚开始觉得很复杂,可是仔细思考过后其实还是很简单的,下面就和大家分享一下自己每次的方法和存在的缺点以及如何修改和最终的成品,希望能够对大家有些 ...

  7. aspose.words 合并相同值的单元格_合并相同的单元格,你用了1小时,同事只要30秒,还支持自动刷新...

    Hello.大家好,今天跟大家分享下如何批量合并表格中相同的单元格,并且还能达到自动刷新的效果.合并相同单元格能够让表格看起来更加的美观,同时也能让表格看起来层次分明,更加方便我们阅读数据.话不多说, ...

  8. html多个单元格合并单元格内容,excel怎样快速把多个单元格内容合并 合并多个单元格内容的设置方法...

    excel是我们常用的办公软件,有时我们需要把多个单元个的内容合并到一个单元格里,那么excel怎样快速把多个单元格内容合并?下面小编带来合并多个单元格内容的设置方法,希望对大家有所帮助. 合并多个单 ...

  9. 【知识兔】Excel教程:批量合并相同内容单元格神技

    大家好,今天知识兔跟大家分享一下关于批量合并相同内容单元格的方法有哪些,这是一位同学在群里求助的案例,当时群内针对这个问题各位小伙伴们抛出了多种解决方法,索性知识兔小编就整理成专题文章来跟大家分享一下 ...

  10. Excel中如何批量合并相同内容单元格

    Excel表格录入数据后,发现一些部门名称重复录入太多,看上去也比较复杂,怎么才能将所有重复内容全部合并到一个单元格中去呢? 最终效果 1.首先,我们要选中需要合并的列,「数据」-「分级显示」-「分类 ...

最新文章

  1. 刻意练习:LeetCode实战 -- Task20. 对称二叉树
  2. linux下安装mysql5.7.17及简单配置
  3. 按键映射_第三章 中文注释及按键相关
  4. java jfm入门_java图形编程
  5. python中的装饰器
  6. 典型案例:TL的困局,自己忙不过来,团队没有结果
  7. [BZOJ3696][FJSC2014]化合物(异或规则下的母函数)
  8. Xml序列化和反序列化对象-使用MemoryStream-实践
  9. Linux SHELL 命令入门题目(一)
  10. 鸡汤:干就完了!!!
  11. 2018成都大数据公司名单总汇!
  12. 数据库实战踩坑指南1:取前N项,需要WITH TIES
  13. php mds函数,MDSRank类解析 - linux_hunter的个人页面 - OSCHINA - 中文开源技术交流社区...
  14. 高老师的架构设计_隽语集(CC_1051)
  15. opencv滤镜-二值化实现黑白滤镜
  16. ESD保护二极管,一种有效的ESD静电保护器件
  17. cps1 cps2 android,CPS1和CPS2模拟器详细图文教程
  18. 读取用户输入的账户名称,将账户名写入到数组保存
  19. 深度调研:日本老年消费市场商业成功案例与发展经验成果分享
  20. 依据银行卡号获取银行信息Java代码

热门文章

  1. 《男人装》2006.05
  2. 按行遍历和按列遍历哪一个更快一些?
  3. 我的大学(学习-上)
  4. matlab仿真限幅发散,simulink仿真收敛,但用m文件实现却是发散的,是怎么回事?...
  5. mongdb 下载慢,解决
  6. Day3 分支和循环
  7. 数据库的行列互换问题
  8. 【遗传算法GA】入门:基本介绍
  9. tomcat点击startup.bat闪退
  10. 约束优化问题的一阶条件(KKT条件)、互补松弛条件、拉格朗日对偶问题、SVM