PHPExcel:打印页面边距和自适应大小似乎无法工作。

5
我会循序渐进地调用这三个函数,确保按照指定的顺序依次执行。
public function setPrintFitToWidth()
{
    $this->sheet->getPageSetup()->setFitToWidth(1);    
}

public function setPrintArea($cell_area)
{
    $this->sheet->getPageSetup()->setPrintArea($cell_area); 
}

public function setPrintMargins($top, $right, $bottom, $left)
{
    $this->sheet->getPageMargins()->setTop($top);
    $this->sheet->getPageMargins()->setRight($right);
    $this->sheet->getPageMargins()->setLeft($left);
    $this->sheet->getPageMargins()->setBottom($bottom);
}

问题在于,打开生成的Excel文件后,页面边距被设置为“自定义”,但实际上与我传递给函数的边距值不同。事实上,我使用了参数(1,0.5,0.5,1)调用函数,但是我得到的值是2, 0.8, 0.8, 2,顺序相同。这真的很奇怪...
另外:我无法让setFittoWidth(1)正常工作;我希望看到所有列都适应一页,但Excel告诉我它已经设置为自适应页面大小了。
我错在哪里了吗?

你使用的是哪个写入器? - Mark Baker
默认的应该是Excel2007,因为我创建了.xlsx文件。 - realtebo
1个回答

6

已解决:

更改

public function setPrintFitToWidth()
{
    $this->sheet->getPageSetup()->setFitToWidth(1);    
}

to

public function setPrintFitToWidth()
{
    $this->sheet->getPageSetup()->setFitToWidth(1);    
    $this->sheet->getPageSetup()->setFitToHeight(0);    
}

关于边距:我尝试将其设置为零,边距仍然被保留,因此我得出结论,PHPExcel单位在某种程度上被“缩小”了... 因此,在多次尝试和修改后,我找到了生成正确边距的值。

我认为页面边距参数是以英寸为单位的,1厘米=0.393英寸,如果我使用0.39作为值,在Excel中它会显示为10毫米。 - Tim

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