使用PHPExcel设置列宽度不起作用

时间:2013-01-04 17:36:26

标签: php phpexcel xlsx

我正在尝试格式化我使用PHPExcel创建的文档的单元格宽度,但是当我使用getColumnDimension('A') - > setWidth(7)方法时,它在生成时没有准确生成xlsx文件。

我在Excel中格式化文档,以便找到我想要的单元格的值,我得到两个值,一个是Excel单位,另一个是英寸。

例如:

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth('7');

最终会给我一个6.17而不是7的列宽。我已经尝试过使用字符串和int值,没有任何变化。有什么想法吗?

4 个答案:

答案 0 :(得分:16)

这是因为MS Excel将数字本身调整为自己的内部单位:开发人员文档中有一整节(第4.6.28节,标题为“设置列的宽度”),这解释了这一点。

从该部分的侧边栏引用:

  

PHPExcel中列宽的度量并不完全对应   您可能习惯在Microsoft Office Excel中使用的度量。柱   Excel中的宽度很难处理,有几种   列宽的度量。

     
      
  1. 以字符为单位的内部宽度(例如,8.43这可能是您在Excel中熟悉的内容)
  2.   
  3. 像素的全宽(例如64像素)
  4.   
  5. 字符单位的全宽(例如9.140625,值-1表示   未设置的宽度)
  6.         

    PHPExcel始终以3)“字符单位的全宽”操作   实际上是存储在任何Excel文件中的唯一值,因此   最可靠的措施。 不幸的是,Microsoft Office Excel没有   告诉你这个措施。而是计算测量1)和2)   由文件打开时的应用程序和这些值   在各种对话和工具提示中提供。

         

    字符宽度单位是“0”(零)字形的宽度   工作簿默认字体。因此,字符宽度以字符形式测量   两个不同工作簿中的单位只有具有的才能进行比较   相同的默认工作簿字体。

         

    如果你有一些Excel文件,需要知道列宽   测量3),你可以用PHPExcel读取Excel文件并回显   检索到的值。

(我的重点是粗体)

答案 1 :(得分:0)

将0.71添加到excel单元格宽度值并将该值提供给

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(10);

例如:列宽= 3.71(excel值)

给列宽= 4.42

将为输出文件提供相同的单元格宽度。

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(4.42);

答案 2 :(得分:0)

设置任何列的宽度之前,首先需要禁用自动调整大小

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setAutoSize(false);

之后,您需要设置宽度

$objPHPExcel->getActiveSheet()->getColumnDimension('A')->setWidth(40);

我在MS Excel中发现的宽度计算: MS Excel减去我们定义的大小0.71。 示例:当您在MS Excel设置宽度39.29的代码中定义宽度40时。 这样一种精确放置任意列所需大小的好方法,首先在MS Excel中设置所需宽度,然后在其中添加0.71并在代码中进行设置。

设置宽度后,您可以再次启用自动调整大小。

答案 3 :(得分:-2)

试试这个: - 在设置宽度之前添加以下行: -

$objPHPExcel->setActiveSheetIndex(0);