当我尝试打开/阅读电子表格(xls)时,出现以下错误:
小数位数必须大于或等于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中使用,但不提供任何担保!
答案 0 :(得分:0)
您可以使用:
$spreadsheet = \IOFactory::load($filename);
答案 1 :(得分:0)
好的,我找到了解决我特定问题的方法...
它需要编辑setZoomScale
中的SheetView.php
函数。
我文件中的缩放比例值为零,这引发了错误。新代码将对此进行检查,如果找到,则将其设置为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;
}