PHPExcel错误:比例必须大于或等于1

时间:2014-09-18 14:43:23

标签: php phpexcel

我认为这与生成Excel文件.xlsx的方式有关,我们很遗憾无法控制它,因为它通过第三方API。每次我尝试使用...

打开文件
    try {
            $inputFileType = PHPExcel_IOFactory::identify($inputFileName);
            $objReader = PHPExcel_IOFactory::createReader($inputFileType);
            $objPHPExcel = $objReader->load($inputFileName);
        } catch(Exception $e) {
            die('Error loading file "'.pathinfo($inputFileName,PATHINFO_BASENAME).'": '.$e->getMessage());
        }

我收到一个错误吐出来说' filename.xlst':PHPExcel错误:比例必须大于或等于1.我猜测当他们生成Excel文件时他们正在设置缩放比例的非法值。我可以通过将它转换为csv然后返回到xlsx来获得同样的文件,我假设它将文档上的缩放比例设置回默认值。

问题是这对最终用户来说是一件痛苦的事情,当我在文件中加载时,我似乎无法在文档中找到覆盖缩放比例设置的方法。

非常感谢任何帮助。

4 个答案:

答案 0 :(得分:0)

就像我们以为我们有一些非法角色。与我一起工作的同事所做的是找到一个XLSX到CSV转换器并重写一点并将其添加为作曲家包。如果有其他人遇到这个问题,回购就在这里。我会尽快添加一些文档。

https://github.com/StudentAffairsUWM/xlsxtocsv

答案 1 :(得分:0)

我得到了这个例外 问题出在xlsx文件中,xml表格描述中的参数zoomScaleNormal为0,但这是错误的。 如果从excel保存此文件,则错误已消失。 在我的情况下,我编辑文件Reader / Excel2007.php

   if (isset($xmlSheet->sheetViews->sheetView['zoomScaleNormal'])) {
        if (intval($xmlSheet->sheetViews->sheetView['zoomScaleNormal']) === 0)
            $zoomScaleNormal = 85;
        else{
            $zoomScaleNormal = intval($xmlSheet->sheetViews->sheetView['zoomScaleNormal']);
        }
        $docSheet->getSheetView()->setZoomScaleNormal( $zoomScaleNormal );
    }

我是添加条件,如果zoomScaleNormal = 0,我将其设置为85

答案 2 :(得分:0)

今天也发生在我身上。在Reader/Excel5.php行上4325添加其他支票:

    if ($fPageLayoutView === 1) {
        $this->_phpSheet->getSheetView()->setView(PHPExcel_Worksheet_SheetView::SHEETVIEW_PAGE_LAYOUT);
        if ($wScalePLV == 0) $wScalePLV = 100; // <<<<< ADD THIS CHECK
        $this->_phpSheet->getSheetView()->setZoomScale($wScalePLV); //set by Excel2007 only if SHEETVIEW_PAGE_LAYOUT
    }

答案 3 :(得分:0)

升级到最新的PhpSpreadsheet版本(或至少为v1.2.0)。

此问题已通过https://github.com/PHPOffice/PhpSpreadsheet/pull/350解决。