PHPSpreadsheet:比例必须大于或等于1
PHPSpreadsheet: Scale must be greater than or equal to 1
当我尝试 open/read 电子表格 (xls) 时,出现以下错误:
Scale must be greater than or equal to 1
我正在使用以下代码打开和读取文件:
$filename = 'test.xls';
$spreadsheet = IOFactory::load($filename); //<-- ERRORS HERE
$worksheet = $spreadsheet->getActiveSheet();
错误发生在 ::load
命令上。
这不是数据问题 - 我可以将现有数据复制到一个新文件中并且它工作正常,所以肯定是文件本身的问题。
我正在使用 PHPSpreadsheet v1.6.0,这是撰写本文时的最新版本。
提前致谢!
编辑:
此问题与 PHPSpreadsheet 相关,而不是此处列出的 PHPExcel:
PHPExcel Error: Scale must be greater than or equal to 1
虽然类似,但我的文件的 XLSX 版本按预期工作,因此需要创建一个单独的问题。 PHPExcel 现在也被标记为正式死亡,因此将这个问题添加到 SO 上的正确库/标签似乎是合乎逻辑的。
此后我找到了问题的解决方案(在下面添加),可能 也可以在 PHPExcel 中使用,但不提供任何保证!
您可以使用:
$spreadsheet = \IOFactory::load($filename);
好的,我找到了解决我的特定问题的方法...
需要对 setZoomScale
函数进行编辑,该函数可在 SheetView.php
中找到。
我文件中的 zoomscale 值为零,这引发了错误。新代码对此进行检查,如果找到,则将其设置为 1。
也许不是每个人的理想解决方案,但在紧要关头有效:
public function setZoomScale($pValue)
{
/* NEW code that sets the zoom scale
------------------------------------------*/
//Zoom Scale of 0 causes error. If found, default pValue to 1.
if( $pValue == 0)
{
$pValue = 1;
}
/*----------------------------------------*/
// Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface,
// but it is apparently still able to handle any scale >= 1
if (($pValue >= 1) || $pValue === null)
{
$this->zoomScale = $pValue;
}
else
{
throw new PhpSpreadsheetException('Scale must be greater than or equal to 1.');
}
return $this;
}
当我尝试 open/read 电子表格 (xls) 时,出现以下错误:
Scale must be greater than or equal to 1
我正在使用以下代码打开和读取文件:
$filename = 'test.xls';
$spreadsheet = IOFactory::load($filename); //<-- ERRORS HERE
$worksheet = $spreadsheet->getActiveSheet();
错误发生在 ::load
命令上。
这不是数据问题 - 我可以将现有数据复制到一个新文件中并且它工作正常,所以肯定是文件本身的问题。
我正在使用 PHPSpreadsheet v1.6.0,这是撰写本文时的最新版本。
提前致谢!
编辑:
此问题与 PHPSpreadsheet 相关,而不是此处列出的 PHPExcel: PHPExcel Error: Scale must be greater than or equal to 1
虽然类似,但我的文件的 XLSX 版本按预期工作,因此需要创建一个单独的问题。 PHPExcel 现在也被标记为正式死亡,因此将这个问题添加到 SO 上的正确库/标签似乎是合乎逻辑的。
此后我找到了问题的解决方案(在下面添加),可能 也可以在 PHPExcel 中使用,但不提供任何保证!
您可以使用:
$spreadsheet = \IOFactory::load($filename);
好的,我找到了解决我的特定问题的方法...
需要对 setZoomScale
函数进行编辑,该函数可在 SheetView.php
中找到。
我文件中的 zoomscale 值为零,这引发了错误。新代码对此进行检查,如果找到,则将其设置为 1。
也许不是每个人的理想解决方案,但在紧要关头有效:
public function setZoomScale($pValue)
{
/* NEW code that sets the zoom scale
------------------------------------------*/
//Zoom Scale of 0 causes error. If found, default pValue to 1.
if( $pValue == 0)
{
$pValue = 1;
}
/*----------------------------------------*/
// Microsoft Office Excel 2007 only allows setting a scale between 10 and 400 via the user interface,
// but it is apparently still able to handle any scale >= 1
if (($pValue >= 1) || $pValue === null)
{
$this->zoomScale = $pValue;
}
else
{
throw new PhpSpreadsheetException('Scale must be greater than or equal to 1.');
}
return $this;
}