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