#php #excel #moodle
#php #excel #moodle
Вопрос:
Может кто-нибудь предоставить мне рабочий пример библиотеки moodle excellib. В настоящее время я не могу его использовать, поскольку он записывает xls-файл со всеми html-тегами текущей страницы вместо того, что я действительно хочу в нем написать. Мне нужно создавать пользовательские таблицы, используя эту библиотеку. В настоящее время я создал страницу эксперимента в /local просто для того, чтобы поиграть с ней. Но не повезло. Код выглядит следующим образом:
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
//The number of lines in front of config file determine the // hierarchy of files.
require_once(dirname(dirname(__FILE__)).'/config.php');
$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('admin');
$PAGE->set_title("Experiment Page");
$PAGE->set_heading("Blank page");
$PAGE->set_url($CFG->wwwroot.'/blank_page.php');
echo $OUTPUT->header();
$filename = 'report_'.(time());
$downloadfilename = clean_filename($filename);
/// Creating a workbook
$workbook = new MoodleExcelWorkbook("-");
/// Sending HTTP headers
$workbook->send($downloadfilename);
/// Adding the worksheet
$myxls = $workbook->add_worksheet($filename);
$workbook->close();
exit;
echo $OUTPUT->footer();
Ответ №1:
Проблема в том, что вы выводите заголовок страницы обратно в браузер пользователя, а затем начинаете генерировать файл Excel. Удалите все строки $PAGE и (самое главное) строку echo $OUTPUT->header(); и это будет работать намного лучше.
Комментарии:
1. Что, если мне нужны переменные ВЫВОДА и СТРАНИЦЫ и в то же время я хочу записать в файл то, что мне нравится?
2. Вы можете выводить либо файл, либо веб-страницу, вы не можете выводить оба одновременно (вы можете выводить страницу со ссылкой, которая выводит файл, или с перенаправлением javascript для вывода файла).
3. Я попробовал более поздний вариант, у меня была ссылка, которая отправляет объект таблицы в функцию, определенную в другом файле php, которая записывает его в Excel, но также выводит всю страницу целиком….
4. Я не уверен, что вы подразумеваете под «он отправляет объект таблицы в функцию, определенную в другом файле PHP». Ссылка должна указывать на файл PHP, который выполняет только одну вещь, он выводит файл Excel. Если в том же запросе выводится что-либо еще, загрузка не будет работать. Здесь есть пример: github.com/davosmith/moodle-grade_checklist . ‘index.php » имеет форму, которая отправляет сообщения в «export.php «. ‘export.php ‘вообще ничего не выводит, кроме документа Excel.
5. Спасибо за ваш ответ.