ФорумРазработкаБазы данных → Вывод в Excel

Вывод в Excel

  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz Янв. 13, 2009, 11:17 д.п.

    Вопрос следующего содержания:

    Локалхост… Вывожу данные из базы на страницу. Делаю кнопочку Excel со ссылкой на файл excel.php
    Этот файл отвечает за вывод данных в Excel:


    $ctype="application/vnd.ms-excel";
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Content-Type: $ctype");
    header("Content-Transfer-Encoding: binary");


    Далее передаю sql запрос через сессию из основного файла:

    $sql=$_SESSION['sql'];



    И вывожу данные:


    echo '<table>';
    $result = mysqli_query($_SESSION['link'],$sql);
    while ($user=mysqli_fetch_row($result)){
    echo '<tr>';
    foreach ($user as $data){
    echo '<td>'.$data.'</td>';
    }
    echo '</tr>';
    }
    echo '</table>


    все работает. Данные выводятся в Excel.

    На удаленном серваке, то есть сайте, такая схема приводит к тому, что предлагается скачать не xls файл, а excel.php. И все данные заносятся в одну строку вместе с тегами <td> и <tr>. Что можно сделать, где я ошибся? Спасибо!
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 13, 2009, 11:24 д.п., спустя 7 минут 24 секунды

    попробуй добавить заголовок
    header("Content-Disposition: attachment; filename=file.xsl;");
    Сапожник без сапог
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz Янв. 13, 2009, 11:30 д.п., спустя 5 минут 26 секунд

    Понял в чем дело!
    Вот в этой строке:


    $ctype="application/vnd.ms-excel";


    Поддерживает Иксплорер и Оперу. Соответственно вопрос, как сделать,  чтобы поддерживал все браузеры, кто знает?)
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 13, 2009, 11:42 д.п., спустя 11 минут 41 секунду

    $ctype="application/octet-stream";

    + моя строка про content-disposition … я думаю сработает
    Сапожник без сапог
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz Янв. 13, 2009, 11:44 д.п., спустя 2 минуты 14 секунд


    $ctype="application/octet-stream";

    + моя строка про content-disposition … я думаю сработает


    Спасибо, попробую. )
  • relictx

    Сообщения: 307 Репутация: N Группа: Адекваты

    Spritz Янв. 13, 2009, 11:48 д.п., спустя 4 минуты 29 секунд

    Не прокатывает… Сижу в Мозиле, предлагает скачать php файл
  • Niken

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz Янв. 24, 2011, 11:01 д.п., спустя 740 дней 23 часа 12 минут

    Удалось как-нибудь сделать вывод в Excel? тоже сейчас мучаюсь вопросом, как лучше реализовать формирование Excel файлика, чтобы пользователь мог взять с сайта счёт на оплату
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 24, 2011, 12:01 п.п., спустя 59 минут 38 секунд

    Niken, чем pear spreadshit writer не устроил?
    Сапожник без сапог
  • Niken

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz Янв. 24, 2011, 12:10 п.п., спустя 9 минут 4 секунды

    Он вроде более громоздкий выходит, тот, что в этой теме описан простой, и заморочек меньше) Вот и думал, вдруг нашлось решение, чтобы во всех браузерах работало
  • phpdude

    Сообщения: 26646 Репутация: N Группа: в ухо

    Spritz Янв. 24, 2011, 12:19 п.п., спустя 8 минут 54 секунды

    Niken, заметь, и подход и результат разный. в это варианте - получается ВЕБСТРАНИЦА, которую смотрят в экселе, а в который я сказал - полноценный ексель документ
    Сапожник без сапог
  • Niken

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz Янв. 24, 2011, 2:28 п.п., спустя 2 часа 9 минут 31 секунду

    Да, согласен, идёт подмена понятий, но в моём случае этого за глаза хватит, никаких экселевских функций не надо, просто счет на оплату, уже получилось сделать, спасибо)
  • Givi

    Сообщения: 2284 Репутация: N Группа: Адекваты

    Spritz Янв. 24, 2011, 3:41 п.п., спустя 1 час 12 минут 57 секунд

    во-во, я бы с удовольствием заюзал, ибо лень самому искать нынче. Как раз сегодня сделал подобную фишку, но с сохранением в .csv. который мне ппц не нравится. Предлагали самое простое это формировать тот же .xlsx либо же .xls со вставкой хтмл-тегов, но мне оно как-то не очень. Хотя насчет .xlsx нужно подумать.
  • Niken

    Сообщения: 24 Репутация: N Группа: Кто попало

    Spritz Янв. 24, 2011, 8:51 п.п., спустя 5 часов 10 минут 5 секунд

    Да сделано максимально просто) Сохранил нужный xls файл в виде html странички и взял оттуда его оформление, при выводе просто ставлю расширение файла, xls.
    Не совсем честно по отношению к пользователю, но т.к. это просто счёт на оплату, то все свои функции он выполняет

Пожалуйста, авторизуйтесь, чтобы написать комментарий!