Вопрос

Кто-нибудь пользовался Груша:Электронная таблица_excel_writer?

В Руководство по форматированию перечисляет скрипт, похожий на тот, с которым я работаю:(обрезано)

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer();

$worksheet =& $workbook->addWorksheet();
$worksheet->write(0, 0, "Quarterly Profits for Dotcom.Com");

$workbook->send('test.xls');
$workbook->close();
?>

То, что я думаю, я пока понимаю в этом...
$workbook->send('test.xls'); задает заголовки для передачи файла Excel.Теперь, похоже, ошибок не возникает, но загруженный файл полностью пуст (даже в шестнадцатеричном редакторе).

Итак...
Где (в каком классе / методе) находится $workbook предполагается, что двоичный файл должен быть записан?Или я все это неправильно понимаю?

Примечание:Честно говоря, я не знаю, какая версия Spreadsheet_Excel_Writer используется;источники не содержат такой полезной информации.
Я могу сказать вам, что авторское право является 2002-2003;итак, где угодно от версии 0.1 до 0.6.

[Редактировать] Извините, мне показалось, я где-то упоминал об этом..Это чужой сценарий, который мне поручили исправить.

Это было полезно?

Решение

Вот несколько примеров кода:

<?php
require_once 'Spreadsheet/Excel/Writer.php';
$workbook = new Spreadsheet_Excel_Writer('test.xls');
$worksheet =& $workbook->addWorksheet('My first worksheet');
if (PEAR::isError($worksheet)) {
    die($worksheet->getMessage());
}
$workbook->close();
?>

Я думаю, для начала, дайте вашему рабочему листу имя и попробуйте записать файл напрямую (без send()).

Кроме того, убедитесь, что со всеми методами, которые вы вызываете, протестируйте ответ с помощью PEAR::isError().

Другие советы

Это не очень понятно, но я думаю, что команда send создает только заголовки с правильным типом содержимого и именем файла.После этого вы должны отправить данные с чем-то похожим

$tmpDocument = '/path/to/tmp/file.xls';
$workbook = new Spreadsheet_Excel_Writer($tmpDocument);   

/* Код для создания XLS-файла */

$workbook->close();
$workbook->send('Report.xls');
readfile($tmpDocument);

send() отправляет заголовки элементов управления кэшем и заголовки типов контента, но не содержимое.Содержимое отправляется, как я понимаю из кода, при вызове $workbook->close().

Используйте это, чтобы загрузить рабочий лист в свой браузер

$workbook = new Spreadsheet_Excel_Writer(); // <-- leave parantheses empty
$workbook->send($DownloadFileName);
// Your fancy spreadsheet generating code
$workbook->close();

и это для того, чтобы записать его в файл.

$workbook = new Spreadsheet_Excel_Writer($SaveFileName);
// Your fancy spreadsheet generating code
$workbook->close();

Вам нужно назвать свой рабочий лист по адресу $worksheet =& $workbook->addWorksheet();.
Проверьте приведенный ниже код:

require_once 'Spreadsheet/Excel/Writer.php';

//Create a workbook
$workbook = new Spreadsheet_Excel_Writer(); //() must be empty or your downloaded file will be corrupt.

// Create a worksheet 
$worksheet =& $workbook->addWorksheet('test'); <-- You forgot to name your worksheet in your code, yours is "addWorksheet()"

// The actual data 
$worksheet->write(0, 0, 'Name'); 
$worksheet->write(0, 1, 'Age'); 
$worksheet->write(1, 0, 'John Smith'); 
$worksheet->write(1, 1, 30);
$worksheet->write(2, 0, 'Johann Schmidt');
$worksheet->write(2, 1, 31); $worksheet->write(3, 0, 'Juan Herrera');
$worksheet->write(3, 1, 32);

// send HTTP headers 
$workbook->send('prueba.xls');

// Let's send the file
$workbook->close();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top