Search
Write a publication
Pull to refresh

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;
	}


Задача решена, остальные части библиотеки изменение не заметили. На чем и заканчиваю свой пост.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.