php - 如何PHPExcel设置自动列宽

标签 php width phpexcel autosize

我正在使用 PHPExcel 导出数据以供下载。当打开下载的文件时,单元格有大数字,它显示“#######”而不是值数字。我为每一列尝试了 setAutoSize() 然后调用 $sheet->calculateColumnWidths() 但它仍然没有改变。我看到 calculateColumnWidths() at here ,@Mark Ba​​ker 说“calculateColumnWidths() 将值增加 5% 以尝试确保整个列适合”。如果单元格中的数字长度超过 5%,似乎 doen 解决了问题

更新 这是我自动调整列大小的功能:

   function autoFitColumnWidthToContent($sheet, $fromCol, $toCol) {
        if (empty($toCol) ) {//not defined the last column, set it the max one
            $toCol = $sheet->getColumnDimension($sheet->getHighestColumn())->getColumnIndex();
        }
        for($i = $fromCol; $i <= $toCol; $i++) {
            $sheet->getColumnDimension($i)->setAutoSize(true);
        }
        $sheet->calculateColumnWidths();
    }

最佳答案

第一个潜在问题可能是您正在使用列字母。 PHP 的增量操作将使用列字母,所以如果 $i 是 'A',那么 $i++ 将给出 'B',如果 $i 是 'Z',则 $i++ 将给出 'AA';但您不能使用 <= 作为比较器,因为作为直接比较执行时,'AA' 是 <= 'Z'。

代替

for($i = $fromCol; $i <= $toCol; $i++) {

使用

$toCol++;
for($i = $fromCol; $i !== $toCol; $i++) {

要在调用 $sheet->calculateColumnWidths() 后添加 5% 的边距,请执行以下操作:

for($i = $fromCol; $i !== $toCol; $i++) {
    $calculatedWidth = $sheet->getColumnDimension($i)->getWidth();
    $sheet->getColumnDimension($i)->setWidth((int) $calculatedWidth * 1.05);
}

关于php - 如何PHPExcel设置自动列宽,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10927462/

相关文章:

html - 媒体查询中无法识别 flex 元素的宽度属性

android - 获取布局宽度并在 onGlobalLayoutListener 中设置新的宽度值

php - 使用 PHPExcel 读取包含命名范围的公式结果

php - 无法安装 PHPExcel

javascript - 从Excel中检索数据并显示在页面中

php - Facebook javascript + php,如何保证数据的有效性?

javascript - 复选框未按预期使用 jquery 和 php 进行过滤

php - : print var if var exist 的 PHP 简写是什么

c - 从 jpeg 图像文件获取宽度和高度

php - 在 PHP 中对表中的数据进行分组