Работа с moodle excellib

#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. Спасибо за ваш ответ.