如何在PHPExcel中设置单元格填充?

15
有人知道如何在PHPExcel中设置单元格填充吗? 我已经搜索了30分钟,仍然找不到合适的解决方案。 没有有用的文档资料。
4个回答

30
也许。
$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setIndent(1);

太棒了,伙计!对于所有遇到同样问题的人来说:在PHPExcel中,他们称之为“缩进”,而不是填充或边距。 - Sliq
如何在LaravelExcel中实现此功能? - Rápli András
3
截至撰写本评论的时候,仍可在PHPSpreadsheet中使用。 - Gellie Ann
在 PHPSpreadsheet 文档中找不到这个,所以感谢您发布这段代码。截至目前,已确认在 PHP 版本 7.3.28 下可以正常工作。 - Neil_Tinkerer

5

需要补充说明的是,仅当水平对齐设置为左对齐或右对齐时,此方法才有效。

如果尚未执行,请先执行以下操作:

$objPHPExcel->getActiveSheet()->getStyle('A1')->getAlignment()->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_LEFT);

干杯


1

我认为你需要的是扩展列。我已经找到了一个解决方案。你可以设置列维度为自动调整大小。这里有一个例子。

use PhpOffice\PhpSpreadsheet\Spreadsheet;
$spreadsheet = new Spreadsheet();
$spreadsheet->getActiveSheet()->getColumnDimension('A')->setAutoSize(true);

我在我的Laravel 9项目中使用了这种方法。

编辑:找到了一种动态实现的方法。

$spreadsheet = new Spreadsheet();
$sheet = $spreadsheet->getActiveSheet();
$columnIndex = 'A';

foreach ($sheet->getColumnIterator($columnIndex) as $column) {
    $columnIndex = $column->getColumnIndex();
    $maxWidth = 0;
        foreach ($column->getCellIterator() as $cell) {
            $text = $cell->getValue();
            $width = mb_strlen($text, 'UTF-8');
            $maxWidth = max($maxWidth, $width);
        }
        $spreadsheet->getActiveSheet()->getColumnDimension($columnIndex)->setWidth($maxWidth+1);
 }

0

Cell Padding是HTML的概念,在Excel中没有类似的东西。您如何在MS Excel本身中设置单元格填充?

可能最好的方法是设置单元格的高度和宽度。

编辑

我一直在谷歌搜索这个问题,甚至Microsoft也说Excel中没有单元格填充的等效物。最好的选择似乎是使用单元格对齐缩进(结合列宽)进行水平填充;以及行高和垂直对齐进行垂直填充。这些可以在PHPExcel中设置。


5
不,单元格填充(或“内边距”、“内容边距”等)是布局、软件和文档中的一个通用概念。微软Excel、OpenOffice和LibreOffice都可以做到这一点。我在这里谈论的是流行的PHP库"PHPExcel",所以这与HTML无关。 - Sliq
1
我正在尝试识别如何在 MS Excel 中设置内部或内容边距,但是一直没有成功,并且我无法在 xlsx 或 xls 文件的 ECMA 或 BIFF 文档中找到这些术语与电子表格单元相关(而不是页面打印布局或嵌入式表格)。 我对 PHPExcel 有些熟悉:如果我不熟悉像 cellpadding 这样的元素,则不太可能出现在 PHPExcel 中...但是如果您可以指向文档的相关部分,我可以查看如何实施它。 - Mark Baker
好的,我来看一下这个是怎么称呼的,但是它是存在的,我已经使用Excel工作了将近10年,并且做过很多次这样的事情。为了清楚地表达我的意思:从内容到单元格边框的像素/磅数量。 - Sliq
很可爱,因为诚实而被踩了。对于我不太熟悉PHPExcel,我向Panique道歉...特别是他从未回答过什么是单元格填充的含义。我将停止尝试回答他的问题,因为他似乎出于原则而进行贬低,因为我无法将他的术语与Microsoft使用的术语联系起来。 - Mark Baker
嘿,只是想澄清一下:对于不正确的答案,点踩是有用的,这与个人无关。在这种情况下,答案显然是错误的(因为你谈论的是Excel,而我们谈论的是PHPExcel,它们是完全不同的东西)。而且SO不允许更正点踩“除非答案被编辑”。抱歉! - Sliq
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接