PHPExcel错误:刻度必须大于或等于1

PHPExcel错误:刻度必须大于或等于1,php,phpexcel,Php,Phpexcel,我认为这是Excel文件.xlsx生成的错误,不幸的是,我们无法控制它,因为它是通过第三方API生成的。每次我尝试使用 try { $inputFileType = PHPExcel_IOFactory::identify($inputFileName); $objReader = PHPExcel_IOFactory::createReader($inputFileType); $objPHPExcel = $ob

我认为这是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错误:Scale必须大于或等于1。我猜当他们生成Excel文件时,他们为缩放比例设置了非法值。我可以将同一个文件转换为csv,然后再转换回xlsx,这样可以将文档的缩放比例设置回默认值

问题是,这对最终用户来说是一个难题,我似乎无法在文档中找到在加载文件时覆盖zoomscale设置的方法


非常感谢您的帮助。

就像我们认为我们有一些非法角色一样。和我一起工作的同事找到了一个XLSX到CSV的转换器,重新编写了一点,并将其作为作曲家软件包添加进去。如果有其他人遇到这个问题,回购协议就在这里。我会尽快添加一些文档

我得到了这个例外 问题出现在xlsx文件中,xml工作表描述中的参数
ZoomCalenormal
为0,但这是错误。 如果从excel保存此文件,则错误已消失。 在我的例子中,我是编辑文件阅读器/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 );
    }

我正在添加条件,如果ZoomCalenormal=0,我将其设置为85,今天我也会遇到同样的情况。在第4325行的
Reader/Excel5.php
中添加额外的检查:

    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
    }
if($fPageLayoutView==1){
$this->\u phpSheet->getSheetView()->setView(PHPExcel\u工作表\u SheetView::SheetView\u页面\u布局);

如果($wScalePLV==0)$wScalePLV=100;//升级到最新的PHPSReadSheet版本(或至少v1.2.0)

这已通过以下方式解决