将 PHPSpreadsheet 中的所有文本居中并使单元格扩展以填充上下文

新手上路,请多包涵

我努力让所有单元格将上下文设置为中心并自动扩展,这样它就不会相互重叠。

所以我尝试做的是:

  1. 将每个单元格中的信息设置为居中,因为它更适合打印为 PDF/等。

  2. 根据单元格中的文本量使单元格展开。我不希望 A 中的信息在单元格 B 中重复。

我试过这段代码,但它似乎不起作用:

 $styleArray = array(
            'borders' => array(
                'outline' => array(
                    'style' => Alignment::HORIZONTAL_CENTER,
                ),
            ),
        );

        $sheet ->getStyle('A1:D30')->applyFromArray($styleArray);

如果我为一个单元格(中心上下文)执行此操作,它就可以工作。是不是这样:

 $sheet->setCellValue('A2', $activitiesCount)->getStyle('A2')->getAlignment()->setHorizontal(Alignment::HORIZONTAL_CENTER);

对于细胞扩张,我还没有找到解决方案来尝试。

如果可能的话,我很乐意只用一条命令在我所有的单元格上完成这两项操作。

原文由 stAMy 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

这可以解决问题:

对于自动调整(单元格自动扩展),请执行以下操作:

 $sheet->getColumnDimension('A')->setAutoSize(true);
$sheet->getColumnDimension('B')->setAutoSize(true);

笔记

您必须为每一列单独执行此操作,因为 getColumnDimension 方法只能接受一列作为参数。

您已经了解了水平对齐方式,但值得注意的是,您可以使用一个命令设置多个列的对齐方式。

 $sheet->getStyle('A:B')->getAlignment()->setHorizontal('center');

至于设置单元格值,我希望您将它与与格式和样式有关的任何事情分开进行,只是为了分离关注点和可读性。

干杯。

原文由 Chukwuemeka Inya 发布,翻译遵循 CC BY-SA 4.0 许可协议

用于自动调整一系列列:

 foreach(range('A','Z') as $columnID) {
    $sheet->getColumnDimension($columnID)->setAutoSize(true);
}

将每个单元格中的信息设置为居中:

 $alignment_center = \PhpOffice\PhpSpreadsheet\Style\Alignment::HORIZONTAL_CENTER;

foreach($sheet->getRowIterator() as $row) {
    foreach($row->getCellIterator() as $cell) {
        $cellCoordinate = $cell->getCoordinate();
        $sheet->getStyle($cellCoordinate)->getAlignment()->setHorizontal($alignment_center);
    }
}

这些适用于:

 "phpoffice/phpspreadsheet": "^1.6"

原文由 Adem Tepe 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏