За последние 24 часа нас посетили 14985 программистов и 1676 роботов. Сейчас ищут 1727 программистов ...

завернуть массив в excel файл

Тема в разделе "PHP для новичков", создана пользователем Taktreba, 8 сен 2017.

  1. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    Привет! есть массив такого формата

    PHP:
    1. array(37) {
    2.   ["Сколько в вашей компании юридических лиц"]=>
    3.   array(2) {
    4.     [0]=>
    5.     string(1) "1"
    6.     [1]=>
    7.     string(1) "a"
    8.   }
    9.   ["Количество банковских счетов"]=>
    10.   array(2) {
    11.     [0]=>
    12.     string(1) "2"
    13.     [1]=>
    14.     string(1) "b"
    15.   }
    16.   ["Число видов деятельности (БЕ - бизнес-единиц)"]=>
    17.   array(2) {
    18.     [0]=>
    19.     string(1) "3"
    20.     [1]=>
    21.     string(1) "c"
    22.   }
    23.   ["Количество центров доходов (БН - бизнес направлений)"]=>
    24.   array(2) {
    25.     [0]=>
    26.     string(1) "4"
    27.     [1]=>
    28.     string(1) "d"
    29.   }
    на 37 вопросов. где 1-а 2-b это ответ-комментарий на вопрос который является ключем
    Задача доставить вопрос - ответ - комментарий на почту при нажатии submit/send

    Как завернуть в excel or csv file? и как правильно его в тело письма развернуть?
    Спасибо!
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Вот тут расписано как создать xlsx файл и добавить в него данные.
     
  3. Taktreba

    Taktreba Активный пользователь

    С нами с:
    11 янв 2017
    Сообщения:
    543
    Симпатии:
    132
    есть массив
    PHP:
    1. array(6) {
    2.   ["Сколько в вашей компании юридических лиц"]=>
    3.   array(2) {
    4.     [0]=>
    5.     string(0) ""
    6.     [1]=>
    7.     string(0) ""
    8.   }
    9.   ["Количество банковских счетов"]=>
    10.   array(2) {
    11.     [0]=>
    12.     string(0) ""
    13.     [1]=>
    14.     string(0) ""
    15.   }
    на 37 пунктов
    есть код
    PHP:
    1. if ($_POST['submit']) {
    2.     $arr = $_POST['q'];
    3.    
    4.  
    5.    
    6. foreach ($arr as $k => $v) {
    7.     $phpexcel = new PHPExcel(); // Создаём объект PHPExcel
    8.     /* Каждый раз делаем активной 1-ю страницу и получаем её, потом записываем в неё данные */
    9.     $page = $phpexcel->setActiveSheetIndex(0); // Делаем активной первую страницу и получаем её
    10.  
    11.     $page->setCellValue("A".$count, $k);
    12.     $page->setCellValue("B".$count, $v[0]);
    13.     $page->setCellValue("C".$count, $v[1]);
    14.  
    15.  
    16.     $page->setTitle("Test"); // Ставим заголовок "Test" на странице
    17.     /* Начинаем готовиться к записи информации в xlsx-файл */
    18.     $objWriter = PHPExcel_IOFactory::createWriter($phpexcel, 'Excel2007');
    19.     /* Записываем в файл */
    20.     $objWriter->save("forma.xlsx");
    21.     $count++;
    22. }
    23. }
    почему записывает только последний массив в файл?

    upload_2017-9-8_12-51-53.png
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.787
    Симпатии:
    1.328
    Адрес:
    Лень
    ты файл 37 раз перезаписываешь
     
    Abyss нравится это.
  5. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.575
    Симпатии:
    1.759
    @Taktreba а есть такая вещь, как логика, которая подсказывает, что для записи 37 строк в один файл 37 раз его создавать не нужно...
     
    Taktreba нравится это.
  6. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.984
    Симпатии:
    759
    Если хочешь всё сделать сам, то не открывай спойлер.
    Оставь в теле цикла только это:
    PHP:
    1. $page->setCellValue("A".$count, $k);
    2. $page->setCellValue("B".$count, $v[0]);
    3. $page->setCellValue("C".$count, $v[1]);
    Всё, что выше - вынеси выше цикла.
    Всё, что ниже - вынеси ниже цикла.
    С тебя лайк :)
    --- Добавлено ---
    $count++ тоже оставь.
    Ну и объяви его где-то....
     
    Taktreba нравится это.