Domanda

Qualcuno ha usato Pear: Spreadsheet_Excel_Writer ?

Il Tutorial di formattazione elenca uno script simile a quello su cui sto lavorando: (abbreviato)

<?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();
?>

Quello che penso di aver capito finora ...
$ workbook- > send ('test.xls'); imposta le intestazioni per il trasferimento di file Excel. Ora, non sembrano emergere errori, ma il file scaricato è completamente vuoto (anche in un editor esadecimale).

Quindi ...
Dove (in quale classe / metodo) dovrebbe essere scritto il binario $ workbook ? Oppure, sto fraintendendo tutto?

Nota : Onestamente non so quale versione di Spreadsheet_Excel_Writer viene utilizzata; le fonti non includono tali informazioni utili.
Posso dirti che il copyright è 2002-2003 ; quindi, ovunque dalla versione 0.1 alla 0.6.

[ Modifica ] Scusa, ho pensato di averlo menzionato da qualche parte .. Questo è lo script di qualcun altro che mi è stato assegnato di risolvere.

È stato utile?

Soluzione

Ecco un codice di esempio:

<?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();
?>

Penso per i principianti, dai un nome al tuo foglio di lavoro e prova a scrivere un file direttamente (senza send () ).

Inoltre, assicurati che con tutti i metodi che chiami, testa la risposta con PEAR :: isError () .

Altri suggerimenti

Non è molto chiaro, ma penso che il comando send crei solo le intestazioni con il tipo di contenuto e il nome file corretti. In seguito devi inviare i dati, con qualcosa di simile

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

/ * Codice per generare il file XLS * /

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

send () invia le intestazioni di controllo della cache e le intestazioni del tipo di contenuto, ma non il contenuto. Il contenuto viene inviato, come ho capito dal codice, quando viene chiamato $ workbook- > close ().

Utilizzalo per scaricare il foglio di lavoro nel tuo browser

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

e questo per scriverlo in un file.

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

Devi nominare il tuo foglio di lavoro in $ worksheet = & amp; $ Workbook- > addWorksheet ();
. Controlla il codice qui sotto:

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();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top