我认为这与生成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错误:比例必须大于或等于1.我猜测当他们生成Excel文件时他们正在设置缩放比例的非法值。我可以通过将它转换为csv然后返回到xlsx来获得同样的文件,我假设它将文档上的缩放比例设置回默认值。
问题是这对最终用户来说是一件痛苦的事情,当我在文件中加载时,我似乎无法在文档中找到覆盖缩放比例设置的方法。
非常感谢任何帮助。
答案 0 :(得分:0)
就像我们以为我们有一些非法角色。与我一起工作的同事所做的是找到一个XLSX到CSV转换器并重写一点并将其添加为作曲家包。如果有其他人遇到这个问题,回购就在这里。我会尽快添加一些文档。
答案 1 :(得分:0)
我得到了这个例外
问题出在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
答案 2 :(得分:0)
今天也发生在我身上。在Reader/Excel5.php
行上4325
添加其他支票:
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
}
答案 3 :(得分:0)
升级到最新的PhpSpreadsheet版本(或至少为v1.2.0)。
此问题已通过https://github.com/PHPOffice/PhpSpreadsheet/pull/350解决。