Как создать файл Excel с автофильтрами в PHP? - PullRequest
14 голосов
/ 08 сентября 2011

Хорошо, вот моя дилемма.

Я работаю над плагином для Wordpress для Medical Marcom , чтобы автоматически обновлять его Список докторов Twitter в США. По сути, он обеспечивает возможность создания формы, в которой пользователи могут запросить добавление в список, запросы могут быть подтверждены в панели администратора, после добавления они доступны в файле Excel и начальные данные заполнены, и, наконец, некоторые поля автоматически обновляются в течение недели.

Вот проблема.

Мой код генерирует файл Excel с PHP, используя PHPExcel. Однако мне нужно, чтобы при запуске к листу применялся простой автофильтр (честно говоря, я не знаю, в чем дело ... любой может легко применить автофильтр в Excel, но он хочет, чтобы он был доступен с самого начала). Итак, я попытался применить найденный код:

$excel->getActiveSheet()->setAutoFilter('A1:J' . $row);

$ excel - это мой экземпляр PHPExcel. $ row - последняя строка, выводимая из базы данных. Файл генерируется сразу после щелчка по URL-адресу и установки заголовков PHP для перевода вывода в виде файла Excel, например:

header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=" . $file);

Но когда я открываю файл, автофильтры не устанавливаются ... Я попытался опубликовать вопрос на веб-сайте PHPExcel , но я не получил никаких ответов, поэтому я решил спросить здесь.

Кто-нибудь знает, что я могу делать не так? Пока он работает с оригинальным файлом (хотя и немного обновленным), пока эта проблема не будет решена.

Ответы [ 3 ]

30 голосов
/ 21 сентября 2015

На случай, если кто-нибудь столкнется с этим вопросом.Эта функция была реализована как для XLSX, так и для XLS.

Вам просто нужно указать диапазон строки заголовка, чтобы он работал:

$excel->getActiveSheet()->setAutoFilter('A1:J1');
1 голос
/ 03 января 2019

PHPSpreadsheet имеют намного более приятную реализацию , если вы хотите, чтобы ваш весь лист был автоматически фильтрован:

    $sheet->setAutoFilter(
        $sheet->calculateWorksheetDimension()
    );
1 голос
/ 08 сентября 2011

Я понимаю из этой ссылки , что она еще не реализована.

Похоже, что это все еще рабочий элемент (извините с низким приоритетом).

[ПРАВКА], похоже, может работать с Excel 2007 (см. Этот рабочий элемент ). Какую версию Excel использует ваш клиент?

...