如何在 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_CENTERRIGHTLEFTJUSTIFY 等。我该如何正确地做到这一点?

【问题讨论】:

可能有几个原因可能会导致您收到反对票:(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 - 您可能需要将 horizontalvertical 都设置为居中。 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 中居中对齐单元格值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 CDateTimeCtrl 中居中对齐文本?

如何在 SVG 剪辑路径中居中对齐图像?

如何在容器中居中元素,同时保持它们垂直对齐?

如何在 Swift3.0 中居中对齐 UICollectionView 的单元格?

如何在 WinForms 的 ComboBox 中居中对齐所选项目?

如何在 XAML 中居中​​选项卡式页面选项卡图标和/或文本?