如何在 PhpSpreadsheet 中居中对齐单元格值?
Posted
技术标签:
【中文标题】如何在 PhpSpreadsheet 中居中对齐单元格值?【英文标题】:How to middle align cell value in PhpSpreadsheet? 【发布时间】:2019-08-04 02:18:24 【问题描述】:我想将单元格值对齐到中间。我的输出如下所示:-
我的预期输出应该是这样的:
我希望每一列都位于中心。我尝试了以下代码:
$styleArray = [
'font' => [
'bold' => true,
],
'alignment' => [
'horizontal' => \phpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
],
'fill' => [
'fillType' => \PhpOffice\PhpSpreadsheet\Style\Fill::FILL_SOLID,
'startColor' => [
'argb' => '0070C0',
],
'endColor' => [
'argb' => '0070C0',
],
],
];
$spreadsheet->getDefaultStyle()->getFont()->setSize(10);
我尝试了所有其他属性,例如HORIZONTAL_CENTER
、RIGHT
、LEFT
、JUSTIFY
等。我该如何正确地做到这一点?
【问题讨论】:
可能有几个原因可能会导致您收到反对票:(a) 您没有提供关键变量的定义($template['start_from']
、$template['start_to']
、$attribute[]
等), (b) 缺乏可感知的研究工作(文档是免费提供的,并具体描述了如何实现这一目标)
实际上这些是我的数据库值,如果我添加更多描述,他们将尝试仅添加适当的信息
【参考方案1】:
您为alignment
设置设置了错误的(并且一个或多个)键。您尝试实现的是文本的垂直 和 水平对齐方式。
'alignment' => [
'vertical' => \PhpOffice\PhpSpreadsheet\Style\Alignment::VERTICAL_CENTER,
'horizontal' => \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER,
],
PhpSpreadsheet docs
【讨论】:
我用于测试目的我已经恢复了相同的输出 @kunal - 您是 删除alignment
属性还是将其 更改 为 vertical
而不是 horizontal
这样答案提示?
@kunal - 您可能需要将 horizontal
和 vertical
都设置为居中。
kunal - 请参阅@MagnusEriksson 建议的更新答案【参考方案2】:
除了style array way,你还可以通过方法链的方式来实现:
$spreadsheet->getActiveSheet()->getStyle($cells)->getAlignment()->setHorizontal($align)
$spreadsheet->getActiveSheet()->getStyle($cells)->getAlignment()->setVertical($align);
$cells
应该是单个单元格 ('A1'
) 或一系列单元格 ('A1:E4'
)。
$align
应该是 \PhpOffice\PhpSpreadsheet\Style\Alignment
类(或其字符串值)的常量,用于所需的对齐。
对于水平对齐:
Alignment::HORIZONTAL_GENERAL
或 'general'
Alignment::HORIZONTAL_LEFT
或 'left'
Alignment::HORIZONTAL_RIGHT
或 'right'
Alignment::HORIZONTAL_CENTER
或 'center'
Alignment::HORIZONTAL_CENTER_CONTINUOUS
或 'centerContinuous'
Alignment::HORIZONTAL_JUSTIFY
或 'justify'
Alignment::HORIZONTAL_FILL
或 'fill'
Alignment::HORIZONTAL_DISTRIBUTED
或 'distributed'
(仅限 Excel2007)
垂直对齐:
Alignment::VERTICAL_BOTTOM
或 'bottom'
Alignment::VERTICAL_TOP
或 'top'
Alignment::VERTICAL_CENTER
或 'center'
Alignment::VERTICAL_JUSTIFY
或 'justify'
Alignment::VERTICAL_DISTRIBUTED
或 'distributed'
(仅限 Excel2007)
这些的来源是source。
【讨论】:
以上是关于如何在 PhpSpreadsheet 中居中对齐单元格值?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Swift3.0 中居中对齐 UICollectionView 的单元格?