2015-11-23 4 views
0

A) Я хотел бы, чтобы файл с открытым кодом PHPExcel открывался с выбранной ячейкой A1. Не проблема: я могу это сделать.phpexcel select cell after freezePane()

B) Я хотел бы иметь файл с PHPExcel с замороженными стеклами (в 'E6', но это не настоящая проблема). Опять же, не проблема: я могу это сделать.

Теперь, при попытке сделать и B, что, когда я ударил реальную проблему: файл всегда начинается с ячейки E6 не выбран, независимо от того, что я стараюсь ...

Я попытался с помощью $ objPHPExcel-> getActiveSheet() -> freezePane ('E6'); на разных этапах построения файла (прямо в начале, в конце, посередине), всегда с $ objPHPExcel-> getActiveSheet() -> setSelectedCell ('A1'); ПОСЛЕ замораживания стекла, но не повезли ...

Я искал и искал и не нашел решения этой проблемы (за исключением, возможно, связанным но-без ответа запроса здесь на SO). Либо я пропускаю что-то явно простое, либо я обнаружил небольшую ошибку ... :-) Может кто-нибудь помочь?

Большое спасибо в ожидании.

+0

Невозможно реплицировать! Я замораживаю панель, затем я устанавливаю SetElectedCell ('A1') и никаких проблем ..... в каком формате вы пишете? –

+0

xlsx ... Я озадачен. Я согласен с тем, что это должно быть просто, но я снова и снова сталкиваюсь с тем же вопросом. Это умеренно сложная страница, и я сомневаюсь, что это какая-то другая проблема, которая мешает. Завтра я напишу образец (и простой) файл и отчитаюсь здесь. Спасибо за ответ! –

+0

@ mark-baker Я собирался «отчитываться здесь», делая разные попытки и всегда придумывая один и тот же воспроизводимый сценарий (выбранная ячейка * никогда не переходит в A1). Затем я увидел ваш ответ и теперь посмотрю, как работает исправление. Еще раз спасибо за отзывы. –

ответ

0

При взгляде на код, Excel2007 Writer переопределяет выбранную ячейку, когда есть разделенная панель, меняя ее на верхнюю левую ячейку сплита.

Быстрый и грязный исправить в Classes/PHPExcel/Writer/Excel2007/Worksheet.php, изменение линии 262, который следует читать

$activeCell = $topLeftCell; 

в

$activeCell = empty($activeCell) ? $topLeftCell : $activeCell; 

Я не проверял его полностью, но он должен работать сейчас .... Мне действительно нужно проверить, какая «панель» выбрала выбранную ячейку, и соответственно установить ее в этой области

+0

«Быстрое и грязное исправление» работает нормально в тестовом файле. Основываясь на том, что я делаю, я ожидаю, что это будет подходящее решение. Благодарим вас за полезную обратную связь. Я буду использовать «патч» с этого момента, и если я не отчитаюсь здесь, это значит, что все хорошо ... Еще раз спасибо! –