Как стать автором
Поиск
Написать публикацию
Обновить

PHPExcel и скрытые строки

Столкнулся сегодня с проблемой при использовании библиотеки PHPExcel.
Версия на данный момент 1.7.9.

Проблема в следующем: при чтении заранее приготовленного шаблона, записи некоторых данных и последующем сохранении файла для отправки пользователю, обнаружилось, что в сохраненном файле теряется «скрытость» строк и столбцов. В шаблоне строки скрыты — в конечном файле они же не скрыты.

У меня шаблон мерками PHPExcel относится к типу Excel2007.
Исходя из этого мне пришлось проверять класс PHPExcel_Reader_Excel2007.

Поиски места с ошибкой привели меня к следующему коду:

if (self::boolean($col["hidden"])) {
  $docSheet->getColumnDimension(PHPExcel_Cell::stringFromColumnIndex($i))->setVisible(FALSE);
}

На первый взгляд все верно.
Идем дальше:
	private static function boolean($value = NULL)
	{
		if (is_numeric($value)) {
			return (bool) $value;
		}
		return ($value === 'true' || $value === 'TRUE') ? TRUE : FALSE;
	}

Тоже все выглядит на первый взгляд правильно.

Вот только данная функция при проверке if (self::boolean($col[«hidden»])) всегда возвращала FALSE.
А все от того, что $col[«hidden»] имеет тип SimpleXMLElemen.
И хоть
echo $col["hidden"];
выдаст на экране 1, но
is_numeric($value);
вернет FALSE.

Не долго думая, я написал вот так:
	private static function boolean($value = NULL)
	{
		if (is_numeric($value)) {
			return (bool) $value;
		}
		return ($value === 'true' || $value === 'TRUE' || $value === '1') ? TRUE : FALSE;
	}


Задача решена, остальные части библиотеки изменение не заметили. На чем и заканчиваю свой пост.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.