我认为这是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.