PHPWord表格中多余空白段落无法删除的技术求助
PHPWord生成表格出现无法删除的空白区域问题
我使用PHPWord生成表格时遇到了无法消除的空白区域,已排除普通空格、制表符、对齐设置或4个空格的原因。错误效果为表格内存在多余空白,预期实现紧凑的表格布局。
原实现代码
$information = new Table(array( 'borderSize' => 6, 'borderColor' => '999999', 'width' => 12000, )); $myFontStyle = array('bold' => true, 'align' => 'center', 'size' => 11, 'name' => 'Times New Roman'); $cellRowSpan = array('vMerge' => 'restart'); $information->addRow(); $information->addCell(500, $cellRowSpan)->addText('№', $myFontStyle); // $information->addCell(1500, $cellRowSpan)->addText('1 кв.м учун қиймати сумда', $myFontStyle); $information->addCell(2200, $cellRowSpan)->addText(trans('contract.information.total'), $myFontStyle); $information->addCell(1900, $cellRowSpan)->addText(trans('contract.information.initial'), $myFontStyle); $information->addCell(2100, $cellRowSpan)->addText(trans('contract.information.total_nds'), $myFontStyle); $information->addCell(2200, $cellRowSpan)->addText(trans('contract.information.installment_month'), $myFontStyle); $information->addCell(1900, $cellRowSpan)->addText(trans('contract.information.debt_price'), $myFontStyle);
解决方案
- 匹配表格总宽度与单元格宽度总和:当前表格设置总宽度为12000,但单元格宽度总和为
500+2200+1900+2100+2200+1900=10800,差值会被转化为空白空间。可以调整单元格宽度总和等于12000,或者直接移除表格的width配置,让单元格自动适配布局。 - 清理注释代码:注释的单元格行可能仍会影响布局计算,建议彻底删除该行代码,而非仅注释。
- 移除不必要的纵向合并设置:所有单元格都添加了
vMerge => 'restart',若后续没有合并行的需求,该设置会导致额外布局空间,直接移除即可。 - 消除单元格默认内边距:给单元格添加
'marginTop' => 0, 'marginBottom' => 0, 'marginLeft' => 0, 'marginRight' => 0样式,清除默认内边距带来的空白。
修改后的示例代码
$information = new Table(array( 'borderSize' => 6, 'borderColor' => '999999', // 移除固定总宽度,或调整单元格宽度总和为12000 // 'width' => 12000, )); $myFontStyle = array('bold' => true, 'align' => 'center', 'size' => 11, 'name' => 'Times New Roman'); $information->addRow(); $information->addCell(500)->addText('№', $myFontStyle); $information->addCell(2200)->addText(trans('contract.information.total'), $myFontStyle); $information->addCell(1900)->addText(trans('contract.information.initial'), $myFontStyle); $information->addCell(2100)->addText(trans('contract.information.total_nds'), $myFontStyle); $information->addCell(2200)->addText(trans('contract.information.installment_month'), $myFontStyle); $information->addCell(1900)->addText(trans('contract.information.debt_price'), $myFontStyle);
内容的提问来源于stack exchange,提问作者Azimjon Ganiev
相关产品推荐
相关产品推荐

