Хобрук: Ваш путь к мастерству в программировании

Неустранимая ошибка: вызов неопределенной функции getRow() в экспорте PHPExcel

Я новичок в библиотеке PHPExcel, и это мой первый опыт. Я пытаюсь экспортировать данные MySQL в Ms Excel, предварительно отформатировав их. Я реализовал процедуру, которая просто форматирует заголовки таблицы жирным шрифтом и сохраняет их со всеми соответствующими данными в электронной таблице. Однако, когда я запускаю процедуру, она отображает следующую ошибку:

Fatal error: Call to undefined function getRow() in C:\Xampp\htdocs\test.php on line 182

Вот код PHP:

require_once 'PHPExcel.php';
require_once 'PHPExcel/IOFactory.php';
require_once 'PHPExcel/Writer/Excel2007.php';

// create mysql query
$query_export = "SELECT * FROM `table1` ORDER BY `date` ASC";

// execute query
$result = mysqli_query($GLOBALS['mysqli'], $query_export) or die ("<b>Couldn't execute SQL query:</b> " . mysqli_error($GLOBALS['mysqli']));

try {
    $sheet = new PHPExcel();

    // set metadata
    $sheet->getProperties()->setCreator('www.example.com')
                           ->setLastModifiedBy('www.example.com')
                           ->setTitle('Report on Table')
                           ->setKeywords('report tables etc.');

    // set default settings
    $sheet->getDefaultStyle()->getAlignment()->setVertical(
            PHPExcel_Style_Alignment::VERTICAL_TOP);
    $sheet->getDefaultStyle()->getAlignment()->setHorizontal(
            PHPExcel_Style_Alignment::HORIZONTAL_CENTER);
    $sheet->getDefaultStyle()->getFont()->setName('Calibri');
    $sheet->getDefaultStyle()->getFont()->setSize(12);

    // get reference to active spreadsheet in workbook
    $sheet->setActiveSheetIndex(0);
    $activeSheet = $sheet->getActiveSheet();

    // populate with data
    $row = getRow($result);    // line 182
    $colHeaders = array_keys($row);
    $col = 'A';
    $rownum = 1;

    // set column headings
    foreach ($colHeaders as $header) {
        $activeSheet->setCellValue($col . $rownum, $header);
        $activeSheet->getStyle($col . $rownum)->getFont()->setBold(true);
        $activeSheet->getColumnDimension($col)->setAutoSize(true);
        $col++;
    }

    // populate individual cells with data
    do {
        $col = 'A';
        $rownum++;
        foreach ($row as $value) {
            $activeSheet->setCellValue($col++ . $rownum, $value);
        }
    } while ($row = getRow($result));

    // setting headers
    header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
    header('Content-Disposition: attachment; filename=Export.xlsx');
    header('Cache-Control: no-cache, no-store, must-revalidate');
    header('Pragma: no-cache');
    header('Expires: 0');

    $writer = PHPExcel_IOFactory::createWriter($sheet, 'Excel2007');
    $writer->save('php://output');
    exit();

} catch (Exception $e) {
    $error = $e->getMessage();
}

// display error
if (isset($error)) {
    echo "<p>" .$error. "</p>";
}

// free resultset
mysqli_free_result($result);
// close db connection
$GLOBALS['mysqli']->close();
exit();

Любая помощь приветствуется.

ОБНОВЛЕНИЕ

Для создания вышеупомянутого кода используется следующий учебник: http://www.youtube.com/watch?v=L6MQQvBi-ks#t=65



Ответы:


1

Я считаю, что вам нужно определить getRow или использовать что-то вроде этого:

http://php.net/manual/en/mysqli-result.fetch-row.php

29.07.2014
  • Это не SQL, так что это не близко к ответу на вопрос ОП. 29.07.2014
  • Значит, он использует функции mysqli просто для развлечения? 29.07.2014
  • Его вопрос связан с PHPExcel и методом getRow(). 29.07.2014
  • Пожалуйста, прочитайте его код и его вопрос. Ошибка связана с вызовом getRow для результата mysqli. Он хочет использовать fetch row или у него больше проблем, чем он понимает. 29.07.2014
  • @DanielWilliams, поскольку @Darren упомянул, что мой вопрос связан с методом PHPExcel и getRow(). С точки зрения SQL-запроса все в порядке, я проверял их несколько раз. 29.07.2014
  • @Dozent, глядя на ваш код, ваш единственный вызов getRow связан с результатом sql. Итак, либо вы хотите вызвать getRow для чего-то другого, либо вам нужна вышеуказанная функция выборки строки. 29.07.2014
  • @Dozent - метод getRow() вообще не связан с PHPExcel, если только вы не пытаетесь вызвать метод для ячейки (в этом случае для какой ячейки, потому что на данный момент у вас нет никаких объектов ячейки).... если он не пытается получить данные из базы данных, то что должен делать getRow()? 29.07.2014
  • Новые материалы

    Прогресс в технологии Трансформеров часть 3
    Многомасштабный управляющий сигнальный преобразователь для бесфазного синтеза движения (arXiv) Автор: Линтао Ван , Кун Ху , Лей Бай , Юй Дин , Ваньли Оуян , Чжиюн Ван . Аннотация:..

    Представляем поддержку компонентов Vue.js. Мгновенный HMR и многое другое.
    Хотя у FuseBox уже был плагин Vue, он был базовым и не имел многих функций, которые делали работу с Vue.js такой приятной. Однако с этим выпуском мы рады сообщить, что в FuseBox..

    Приключения в Javascript, часть 1
    Я продолжаю думать о том, чтобы писать больше, но чем больше я думаю об этом, тем меньше я это делаю. Итак, сегодня я перестал думать и начал писать. Отсюда можно только спускаться… В..

    Понимание дженериков в TypeScript: подробное руководство
    Введение TypeScript, строго типизированный надмножество JavaScript, хорошо известен своей способностью улучшать масштабируемость, удобочитаемость и ремонтопригодность приложений. Одной из..

    Учебные заметки JavaScript Object Oriented Labs
    Вот моя седьмая неделя обучения программированию. После ruby ​​и его фреймворка rails я начал изучать самый популярный язык интерфейса — javascript. В отличие от ruby, javascript — это более..

    Разбор строк запроса в vue.js
    Иногда вам нужно получить данные из строк запроса, в этой статье показано, как это сделать. В жизни каждого дизайнера/разработчика наступает момент, когда им необходимо беспрепятственно..

    Предсказание моей следующей любимой книги 📚 Благодаря данным Goodreads и машинному обучению 👨‍💻
    «Если вы не любите читать, значит, вы не нашли нужную книгу». - J.K. Роулинг Эта статья сильно отличается от тех, к которым вы, возможно, привыкли . Мне очень понравилось поработать над..