title = $title; $this->col = 0; $this->row = 0; $this->data = ''; $this->bofMarker(); } /** * Transmits the proper headers to cause a download to occur and to identify the file properly * @return nothing */ function headers() { header("Content-Type: application/force-download"); header("Content-Type: application/octet-stream"); header("Content-Type: application/download"); header("Content-Disposition: attachment;filename=" . Excel::filename($this->title) . ".xls "); header("Content-Transfer-Encoding: binary "); } function send_to_file( $loc ) { $this->eofMarker(); file_put_contents($loc, $this->data); } function send() { $this->eofMarker(); $this->headers(); echo $this->data; } /** * Writes the Excel Beginning of File marker * @see pack() * @return nothing */ private function bofMarker() { $this->data .= pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0); } /** * Writes the Excel End of File marker * @see pack() * @return nothing */ private function eofMarker() { $this->data .= pack("ss", 0x0A, 0x00); } /** * Moves internal cursor left by the amount specified * @param optional integer $amount The amount to move left by, defaults to 1 * @return integer The current column after the move */ function left($amount = 1) { $this->col -= $amount; if($this->col < 0) { $this->col = 0; } return $this->col; } /** * Moves internal cursor right by the amount specified * @param optional integer $amount The amount to move right by, defaults to 1 * @return integer The current column after the move */ function right($amount = 1) { $this->col += $amount; return $this->col; } /** * Moves internal cursor up by amount * @param optional integer $amount The amount to move up by, defaults to 1 * @return integer The current row after the move */ function up($amount = 1) { $this->row -= $amount; if($this->row < 0) { $this->row = 0; } return $this->row; } /** * Moves internal cursor down by amount * @param optional integer $amount The amount to move down by, defaults to 1 * @return integer The current row after the move */ function down($amount = 1) { $this->row += $amount; return $this->row; } /** * Moves internal cursor to the top of the page, row = 0 * @return nothing */ function top() { $this->row = 0; } /** * Moves internal cursor all the way left, col = 0 * @return nothing */ function home() { $this->col = 0; } /** * Writes a number to the Excel Spreadsheet * @see pack() * @param integer $value The value to write out * @return nothing */ function number($value) { $this->data .= pack("sssss", 0x203, 14, $this->row, $this->col, 0x0); $this->data .= pack("d", $value); } /** * Writes a string (or label) to the Excel Spreadsheet * @see pack() * @param string $value The value to write out * @return nothing */ function label($value) { $length = strlen($value); $this->data .= pack("ssssss", 0x204, 8 + $length, $this->row, $this->col, 0x0, $length); $this->data .= $value; } }