我正在尝试使用PHPExcel从某个源加载Excel文件。我无法控制如何生成这些Excel文件,并且需要使用PHPExcel自动打开它们而无需人工干预(重新保存文件等)。
我收到以下错误:
致命错误:在第418行的C:\ path \ to \ PHPExcel \ Worksheet.php中显示消息'在工作表标题中找到无效字符'的异常'异常'
错误发生在load()
行,使用以下代码打开文件:
$reader = PHPExcel_IOFactory::createReader('Excel5');
$excel = $reader->load($filename_xls);
表单标题与我们无关,所以可以忽略它吗?因此忽略错误?
答案 0 :(得分:13)
我们刚刚完成此操作以便立即对其进行排序。它可能非常糟糕,我不会真的建议其他人这样做,但是嘿,它应该适合我们!
在PHPExcel的1.7.8
版本上/Classes/PHPExcel/Worksheet.php
line 414
左右 - 交换checkSheetTitle()
函数以获取以下内容:
private static function _checkSheetTitle($pValue)
{
// Some of the printable ASCII characters are invalid: * : / \ ? [ ]
if (str_replace(self::$_invalidCharacters, '', $pValue) !== $pValue) {
//throw new Exception('Invalid character found in sheet title');
//Hack to remove bad characters from sheet name instead of throwing an exception
return str_replace(self::$_invalidCharacters, '', $pValue);
}
// Maximum 31 characters allowed for sheet title
if (PHPExcel_Shared_String::CountCharacters($pValue) > 31) {
throw new Exception('Maximum 31 characters allowed in sheet title.');
}
return $pValue;
}
答案 1 :(得分:12)
你真的不需要破解核心,只需在你自己的代码中添加它:
// $invalidCharacters = array('*', ':', '/', '\\', '?', '[', ']');
$invalidCharacters = $worksheet->getInvalidCharacters();
$title = str_replace($invalidCharacters, '', $title);
Worksheet.php
公开了您可以使用的getInvalidCharacters()
公共函数。或者变得懒惰并直接使用array()(从Workbook.php定义中复制和粘贴)