PHPExcel错误:小数位数必须大于或等于1


PHPExcel Error: Scale must be greater than or equal to 1

我认为这是Excel File.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来使其工作,我认为这会将文档的缩放比例设置回默认值。

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

非常感谢您的帮助。

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

https://github.com/StudentAffairsUWM/xlsxtocsv

我得到这个异常问题出现在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

今天我也遇到了同样的情况。在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
    }

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

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