Commits vergleichen
2 Commits
20ab04b4c5
...
4b312e4bc6
Autor | SHA1 | Datum | |
---|---|---|---|
|
4b312e4bc6 | ||
|
cc2de4a775 |
9 geänderte Dateien mit 0 neuen und 8521 gelöschten Zeilen
|
@ -1,89 +0,0 @@
|
||||||
<?php
|
|
||||||
/**
|
|
||||||
* Project:
|
|
||||||
* Contenido Content Management System
|
|
||||||
*
|
|
||||||
* Description:
|
|
||||||
* Excel handling class
|
|
||||||
*
|
|
||||||
* Requirements:
|
|
||||||
* @con_php_req 5.0
|
|
||||||
*
|
|
||||||
*
|
|
||||||
* @package Contenido Backend classes
|
|
||||||
* @version 1.0.2
|
|
||||||
* @author Timo A. Hummel
|
|
||||||
* @copyright four for business AG <www.4fb.de>
|
|
||||||
* @license http://www.contenido.org/license/LIZENZ.txt
|
|
||||||
* @link http://www.4fb.de
|
|
||||||
* @link http://www.contenido.org
|
|
||||||
* @since file available since contenido release <= 4.6
|
|
||||||
*
|
|
||||||
* {@internal
|
|
||||||
* created unknown
|
|
||||||
* modified 2008-06-30, Dominik Ziegler, add security fix
|
|
||||||
*
|
|
||||||
* $Id$:
|
|
||||||
* }}
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
if(!defined('CON_FRAMEWORK')) {
|
|
||||||
die('Illegal call');
|
|
||||||
}
|
|
||||||
|
|
||||||
cInclude('pear', 'Spreadsheet/Excel/Writer.php');
|
|
||||||
|
|
||||||
class ExcelWorksheet
|
|
||||||
{
|
|
||||||
var $_data = array();
|
|
||||||
var $_title;
|
|
||||||
var $_filename;
|
|
||||||
|
|
||||||
function __construct ($title, $filename)
|
|
||||||
{
|
|
||||||
$this->_title = Contenido_Security::escapeDB($title, null);
|
|
||||||
$this->_filename = Contenido_Security::escapeDB($filename, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
function setRow ($row)
|
|
||||||
{
|
|
||||||
$row = Contenido_Security::escapeDB($row, null);
|
|
||||||
$args = func_num_args();
|
|
||||||
|
|
||||||
for ($arg=1;$arg<$args;$arg++)
|
|
||||||
{
|
|
||||||
$ma = func_get_arg($arg);
|
|
||||||
$this->setCell($row, $arg, $ma);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function setCell($row, $cell, $data)
|
|
||||||
{
|
|
||||||
$row = Contenido_Security::escapeDB($row, null);
|
|
||||||
$cell = Contenido_Security::escapeDB($cell, null);
|
|
||||||
$data = Contenido_Security::escapeDB($data, null);
|
|
||||||
$this->_data[$row][$cell] = $data;
|
|
||||||
}
|
|
||||||
|
|
||||||
function make ()
|
|
||||||
{
|
|
||||||
|
|
||||||
$workbook = new Spreadsheet_Excel_Writer();
|
|
||||||
$workbook->send($this->_filename);
|
|
||||||
|
|
||||||
$worksheet = & $workbook->addWorksheet($this->_title);
|
|
||||||
|
|
||||||
foreach ($this->_data as $row => $line)
|
|
||||||
{
|
|
||||||
foreach ($line as $col => $coldata)
|
|
||||||
{
|
|
||||||
$worksheet->writeString($row-1, $col-1, $coldata);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
$workbook->close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -328,7 +328,6 @@ return array(
|
||||||
'Output_Compressor' => 'conlite/classes/class.output_compressor.php',
|
'Output_Compressor' => 'conlite/classes/class.output_compressor.php',
|
||||||
'cArticleCollector' => 'conlite/classes/class.article.collector.php',
|
'cArticleCollector' => 'conlite/classes/class.article.collector.php',
|
||||||
'Cms_FileList' => 'conlite/classes/class.cms_filelist.php',
|
'Cms_FileList' => 'conlite/classes/class.cms_filelist.php',
|
||||||
'ExcelWorksheet' => 'conlite/classes/class.excel.php',
|
|
||||||
'Contenido_Category_Articles' => 'conlite/classes/Contenido_Category/Contenido_Category_Articles.class.php',
|
'Contenido_Category_Articles' => 'conlite/classes/Contenido_Category/Contenido_Category_Articles.class.php',
|
||||||
'Contenido_Category' => 'conlite/classes/Contenido_Category/Contenido_Category.class.php',
|
'Contenido_Category' => 'conlite/classes/Contenido_Category/Contenido_Category.class.php',
|
||||||
'Contenido_Categories' => 'conlite/classes/Contenido_Category/Contenido_Category.class.php',
|
'Contenido_Categories' => 'conlite/classes/Contenido_Category/Contenido_Category.class.php',
|
||||||
|
|
|
@ -1,104 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* Module written/ported by Xavier Noguer <xnoguer@rezebra.com>
|
|
||||||
*
|
|
||||||
* PERL Spreadsheet::WriteExcel module.
|
|
||||||
*
|
|
||||||
* The author of the Spreadsheet::WriteExcel module is John McNamara
|
|
||||||
* <jmcnamara@cpan.org>
|
|
||||||
*
|
|
||||||
* I _DO_ maintain this code, and John McNamara has nothing to do with the
|
|
||||||
* porting of this code to PHP. Any questions directly related to this
|
|
||||||
* class library should be directed to me.
|
|
||||||
*
|
|
||||||
* License Information:
|
|
||||||
*
|
|
||||||
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
|
|
||||||
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once('PEAR.php');
|
|
||||||
require_once('Spreadsheet/Excel/Writer/Workbook.php');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class for writing Excel Spreadsheets. This class should change COMPLETELY.
|
|
||||||
*
|
|
||||||
* @author Xavier Noguer <xnoguer@rezebra.com>
|
|
||||||
* @category FileFormats
|
|
||||||
* @package Spreadsheet_Excel_Writer
|
|
||||||
*/
|
|
||||||
|
|
||||||
class Spreadsheet_Excel_Writer extends Spreadsheet_Excel_Writer_Workbook
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* The constructor. It just creates a Workbook
|
|
||||||
*
|
|
||||||
* @param string $filename The optional filename for the Workbook.
|
|
||||||
* @return Spreadsheet_Excel_Writer_Workbook The Workbook created
|
|
||||||
*/
|
|
||||||
function Spreadsheet_Excel_Writer($filename = '')
|
|
||||||
{
|
|
||||||
$this->_filename = $filename;
|
|
||||||
$this->Spreadsheet_Excel_Writer_Workbook($filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Send HTTP headers for the Excel file.
|
|
||||||
*
|
|
||||||
* @param string $filename The filename to use for HTTP headers
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function send($filename)
|
|
||||||
{
|
|
||||||
header("Content-type: application/vnd.ms-excel");
|
|
||||||
header("Content-Disposition: attachment; filename=$filename");
|
|
||||||
header("Expires: 0");
|
|
||||||
header("Cache-Control: must-revalidate, post-check=0,pre-check=0");
|
|
||||||
header("Pragma: public");
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Utility function for writing formulas
|
|
||||||
* Converts a cell's coordinates to the A1 format.
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
* @static
|
|
||||||
* @param integer $row Row for the cell to convert (0-indexed).
|
|
||||||
* @param integer $col Column for the cell to convert (0-indexed).
|
|
||||||
* @return string The cell identifier in A1 format
|
|
||||||
*/
|
|
||||||
function rowcolToCell($row, $col)
|
|
||||||
{
|
|
||||||
if ($col > 255) { //maximum column value exceeded
|
|
||||||
return new PEAR_Error("Maximum column value exceeded: $col");
|
|
||||||
}
|
|
||||||
|
|
||||||
$int = (int)($col / 26);
|
|
||||||
$frac = $col % 26;
|
|
||||||
$chr1 = '';
|
|
||||||
|
|
||||||
if ($int > 0) {
|
|
||||||
$chr1 = chr(ord('A') + $int - 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
$chr2 = chr(ord('A') + $frac);
|
|
||||||
$row++;
|
|
||||||
|
|
||||||
return $chr1.$chr2.$row;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
|
@ -1,241 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* Module written/ported by Xavier Noguer <xnoguer@php.net>
|
|
||||||
*
|
|
||||||
* The majority of this is _NOT_ my code. I simply ported it from the
|
|
||||||
* PERL Spreadsheet::WriteExcel module.
|
|
||||||
*
|
|
||||||
* The author of the Spreadsheet::WriteExcel module is John McNamara
|
|
||||||
* <jmcnamara@cpan.org>
|
|
||||||
*
|
|
||||||
* I _DO_ maintain this code, and John McNamara has nothing to do with the
|
|
||||||
* porting of this code to PHP. Any questions directly related to this
|
|
||||||
* class library should be directed to me.
|
|
||||||
*
|
|
||||||
* License Information:
|
|
||||||
*
|
|
||||||
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
|
|
||||||
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@php.net
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
require_once('PEAR.php');
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Class for writing Excel BIFF records.
|
|
||||||
*
|
|
||||||
* From "MICROSOFT EXCEL BINARY FILE FORMAT" by Mark O'Brien (Microsoft Corporation):
|
|
||||||
*
|
|
||||||
* BIFF (BInary File Format) is the file format in which Excel documents are
|
|
||||||
* saved on disk. A BIFF file is a complete description of an Excel document.
|
|
||||||
* BIFF files consist of sequences of variable-length records. There are many
|
|
||||||
* different types of BIFF records. For example, one record type describes a
|
|
||||||
* formula entered into a cell; one describes the size and location of a
|
|
||||||
* window into a document; another describes a picture format.
|
|
||||||
*
|
|
||||||
* @author Xavier Noguer <xnoguer@php.net>
|
|
||||||
* @category FileFormats
|
|
||||||
* @package Spreadsheet_Excel_Writer
|
|
||||||
*/
|
|
||||||
|
|
||||||
class Spreadsheet_Excel_Writer_BIFFwriter extends PEAR
|
|
||||||
{
|
|
||||||
/**
|
|
||||||
* The BIFF/Excel version (5).
|
|
||||||
* @var integer
|
|
||||||
*/
|
|
||||||
var $_BIFF_version = 0x0500;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The byte order of this architecture. 0 => little endian, 1 => big endian
|
|
||||||
* @var integer
|
|
||||||
*/
|
|
||||||
var $_byte_order;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The string containing the data of the BIFF stream
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
var $_data;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The size of the data in bytes. Should be the same as strlen($this->_data)
|
|
||||||
* @var integer
|
|
||||||
*/
|
|
||||||
var $_datasize;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The maximun length for a BIFF record. See _addContinue()
|
|
||||||
* @var integer
|
|
||||||
* @see _addContinue()
|
|
||||||
*/
|
|
||||||
var $_limit;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Constructor
|
|
||||||
*
|
|
||||||
* @access public
|
|
||||||
*/
|
|
||||||
function Spreadsheet_Excel_Writer_BIFFwriter()
|
|
||||||
{
|
|
||||||
$this->_byte_order = '';
|
|
||||||
$this->_data = '';
|
|
||||||
$this->_datasize = 0;
|
|
||||||
$this->_limit = 2080;
|
|
||||||
// Set the byte order
|
|
||||||
$this->_setByteOrder();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Determine the byte order and store it as class data to avoid
|
|
||||||
* recalculating it for each call to new().
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _setByteOrder()
|
|
||||||
{
|
|
||||||
// Check if "pack" gives the required IEEE 64bit float
|
|
||||||
$teststr = pack("d", 1.2345);
|
|
||||||
$number = pack("C8", 0x8D, 0x97, 0x6E, 0x12, 0x83, 0xC0, 0xF3, 0x3F);
|
|
||||||
if ($number == $teststr) {
|
|
||||||
$byte_order = 0; // Little Endian
|
|
||||||
}
|
|
||||||
elseif ($number == strrev($teststr)){
|
|
||||||
$byte_order = 1; // Big Endian
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Give up. I'll fix this in a later version.
|
|
||||||
return $this->raiseError("Required floating point format ".
|
|
||||||
"not supported on this platform.");
|
|
||||||
}
|
|
||||||
$this->_byte_order = $byte_order;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* General storage function
|
|
||||||
*
|
|
||||||
* @param string $data binary data to prepend
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _prepend($data)
|
|
||||||
{
|
|
||||||
if (strlen($data) > $this->_limit) {
|
|
||||||
$data = $this->_addContinue($data);
|
|
||||||
}
|
|
||||||
$this->_data = $data.$this->_data;
|
|
||||||
$this->_datasize += strlen($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* General storage function
|
|
||||||
*
|
|
||||||
* @param string $data binary data to append
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _append($data)
|
|
||||||
{
|
|
||||||
if (strlen($data) > $this->_limit) {
|
|
||||||
$data = $this->_addContinue($data);
|
|
||||||
}
|
|
||||||
$this->_data = $this->_data.$data;
|
|
||||||
$this->_datasize += strlen($data);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes Excel BOF record to indicate the beginning of a stream or
|
|
||||||
* sub-stream in the BIFF file.
|
|
||||||
*
|
|
||||||
* @param integer $type Type of BIFF file to write: 0x0005 Workbook,
|
|
||||||
* 0x0010 Worksheet.
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _storeBof($type)
|
|
||||||
{
|
|
||||||
$record = 0x0809; // Record identifier
|
|
||||||
|
|
||||||
// According to the SDK $build and $year should be set to zero.
|
|
||||||
// However, this throws a warning in Excel 5. So, use magic numbers.
|
|
||||||
if ($this->_BIFF_version == 0x0500) {
|
|
||||||
$length = 0x0008;
|
|
||||||
$unknown = '';
|
|
||||||
$build = 0x096C;
|
|
||||||
$year = 0x07C9;
|
|
||||||
}
|
|
||||||
elseif ($this->_BIFF_version == 0x0600) {
|
|
||||||
$length = 0x0010;
|
|
||||||
$unknown = pack("VV", 0x00000041, 0x00000006); //unknown last 8 bytes for BIFF8
|
|
||||||
$build = 0x0DBB;
|
|
||||||
$year = 0x07CC;
|
|
||||||
}
|
|
||||||
$version = $this->_BIFF_version;
|
|
||||||
|
|
||||||
$header = pack("vv", $record, $length);
|
|
||||||
$data = pack("vvvv", $version, $type, $build, $year);
|
|
||||||
$this->_prepend($header.$data.$unknown);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Writes Excel EOF record to indicate the end of a BIFF stream.
|
|
||||||
*
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _storeEof()
|
|
||||||
{
|
|
||||||
$record = 0x000A; // Record identifier
|
|
||||||
$length = 0x0000; // Number of bytes to follow
|
|
||||||
$header = pack("vv", $record, $length);
|
|
||||||
$this->_append($header);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Excel limits the size of BIFF records. In Excel 5 the limit is 2084 bytes. In
|
|
||||||
* Excel 97 the limit is 8228 bytes. Records that are longer than these limits
|
|
||||||
* must be split up into CONTINUE blocks.
|
|
||||||
*
|
|
||||||
* This function takes a long BIFF record and inserts CONTINUE records as
|
|
||||||
* necessary.
|
|
||||||
*
|
|
||||||
* @param string $data The original binary data to be written
|
|
||||||
* @return string A very convenient string of continue blocks
|
|
||||||
* @access private
|
|
||||||
*/
|
|
||||||
function _addContinue($data)
|
|
||||||
{
|
|
||||||
$limit = $this->_limit;
|
|
||||||
$record = 0x003C; // Record identifier
|
|
||||||
|
|
||||||
// The first 2080/8224 bytes remain intact. However, we have to change
|
|
||||||
// the length field of the record.
|
|
||||||
$tmp = substr($data, 0, 2).pack("v", $limit-4).substr($data, 4, $limit - 4);
|
|
||||||
|
|
||||||
$header = pack("vv", $record, $limit); // Headers for continue records
|
|
||||||
|
|
||||||
// Retrieve chunks of 2080/8224 bytes +4 for the header.
|
|
||||||
for($i = $limit; $i < strlen($data) - $limit; $i += $limit)
|
|
||||||
{
|
|
||||||
$tmp .= $header;
|
|
||||||
$tmp .= substr($data, $i, $limit);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retrieve the last chunk of data
|
|
||||||
$header = pack("vv", $record, strlen($data) - $i);
|
|
||||||
$tmp .= $header;
|
|
||||||
$tmp .= substr($data,$i,strlen($data) - $i);
|
|
||||||
|
|
||||||
return $tmp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
?>
|
|
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
|
@ -1,225 +0,0 @@
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* Module written by Herman Kuiper <herman@ozuzo.net>
|
|
||||||
*
|
|
||||||
* License Information:
|
|
||||||
*
|
|
||||||
* Spreadsheet_Excel_Writer: A library for generating Excel Spreadsheets
|
|
||||||
* Copyright (c) 2002-2003 Xavier Noguer xnoguer@rezebra.com
|
|
||||||
*
|
|
||||||
* This library is free software; you can redistribute it and/or
|
|
||||||
* modify it under the terms of the GNU Lesser General Public
|
|
||||||
* License as published by the Free Software Foundation; either
|
|
||||||
* version 2.1 of the License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This library is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
||||||
* Lesser General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Lesser General Public
|
|
||||||
* License along with this library; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
*/
|
|
||||||
|
|
||||||
//require_once('PEAR.php');
|
|
||||||
|
|
||||||
// Possible operator types
|
|
||||||
|
|
||||||
/*
|
|
||||||
FIXME: change prefixes
|
|
||||||
*/
|
|
||||||
define("OP_BETWEEN", 0x00);
|
|
||||||
define("OP_NOTBETWEEN", 0x01);
|
|
||||||
define("OP_EQUAL", 0x02);
|
|
||||||
define("OP_NOTEQUAL", 0x03);
|
|
||||||
define("OP_GT", 0x04);
|
|
||||||
define("OP_LT", 0x05);
|
|
||||||
define("OP_GTE", 0x06);
|
|
||||||
define("OP_LTE", 0x07);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Baseclass for generating Excel DV records (validations)
|
|
||||||
*
|
|
||||||
* @author Herman Kuiper
|
|
||||||
* @category FileFormats
|
|
||||||
* @package Spreadsheet_Excel_Writer
|
|
||||||
*/
|
|
||||||
class Spreadsheet_Excel_Writer_Validator
|
|
||||||
{
|
|
||||||
var $_type;
|
|
||||||
var $_style;
|
|
||||||
var $_fixedList;
|
|
||||||
var $_blank;
|
|
||||||
var $_incell;
|
|
||||||
var $_showprompt;
|
|
||||||
var $_showerror;
|
|
||||||
var $_title_prompt;
|
|
||||||
var $_descr_prompt;
|
|
||||||
var $_title_error;
|
|
||||||
var $_descr_error;
|
|
||||||
var $_operator;
|
|
||||||
var $_formula1;
|
|
||||||
var $_formula2;
|
|
||||||
/**
|
|
||||||
* The parser from the workbook. Used to parse validation formulas also
|
|
||||||
* @var Spreadsheet_Excel_Writer_Parser
|
|
||||||
*/
|
|
||||||
var $_parser;
|
|
||||||
|
|
||||||
function Spreadsheet_Excel_Writer_Validator(&$parser)
|
|
||||||
{
|
|
||||||
$this->_parser = $parser;
|
|
||||||
$this->_type = 0x01; // FIXME: add method for setting datatype
|
|
||||||
$this->_style = 0x00;
|
|
||||||
$this->_fixedList = false;
|
|
||||||
$this->_blank = false;
|
|
||||||
$this->_incell = false;
|
|
||||||
$this->_showprompt = false;
|
|
||||||
$this->_showerror = true;
|
|
||||||
$this->_title_prompt = "\x00";
|
|
||||||
$this->_descr_prompt = "\x00";
|
|
||||||
$this->_title_error = "\x00";
|
|
||||||
$this->_descr_error = "\x00";
|
|
||||||
$this->_operator = 0x00; // default is equal
|
|
||||||
$this->_formula1 = "";
|
|
||||||
$this->_formula2 = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
function setPrompt($promptTitle = "\x00", $promptDescription = "\x00", $showPrompt = true)
|
|
||||||
{
|
|
||||||
$this->_showprompt = $showPrompt;
|
|
||||||
$this->_title_prompt = $promptTitle;
|
|
||||||
$this->_descr_prompt = $promptDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setError($errorTitle = "\x00", $errorDescription = "\x00", $showError = true)
|
|
||||||
{
|
|
||||||
$this->_showerror = $showError;
|
|
||||||
$this->_title_error = $errorTitle;
|
|
||||||
$this->_descr_error = $errorDescription;
|
|
||||||
}
|
|
||||||
|
|
||||||
function allowBlank()
|
|
||||||
{
|
|
||||||
$this->_blank = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onInvalidStop()
|
|
||||||
{
|
|
||||||
$this->_style = 0x00;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onInvalidWarn()
|
|
||||||
{
|
|
||||||
$this->_style = 0x01;
|
|
||||||
}
|
|
||||||
|
|
||||||
function onInvalidInfo()
|
|
||||||
{
|
|
||||||
$this->_style = 0x02;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setFormula1($formula)
|
|
||||||
{
|
|
||||||
// Parse the formula using the parser in Parser.php
|
|
||||||
$error = $this->_parser->parse($formula);
|
|
||||||
if (PEAR::isError($error)) {
|
|
||||||
return $this->_formula1;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_formula1 = $this->_parser->toReversePolish();
|
|
||||||
if (PEAR::isError($this->_formula1)) {
|
|
||||||
return $this->_formula1;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setFormula2($formula)
|
|
||||||
{
|
|
||||||
// Parse the formula using the parser in Parser.php
|
|
||||||
$error = $this->_parser->parse($formula);
|
|
||||||
if (PEAR::isError($error)) {
|
|
||||||
return $this->_formula2;
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->_formula2 = $this->_parser->toReversePolish();
|
|
||||||
if (PEAR::isError($this->_formula2)) {
|
|
||||||
return $this->_formula2;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getOptions()
|
|
||||||
{
|
|
||||||
$options = $this->_type;
|
|
||||||
$options |= $this->_style << 3;
|
|
||||||
if($this->_fixedList)
|
|
||||||
$options |= 0x80;
|
|
||||||
if($this->_blank)
|
|
||||||
$options |= 0x100;
|
|
||||||
if(!$this->_incell)
|
|
||||||
$options |= 0x200;
|
|
||||||
if($this->_showprompt)
|
|
||||||
$options |= 0x40000;
|
|
||||||
if($this->_showerror)
|
|
||||||
$options |= 0x80000;
|
|
||||||
$options |= $this->_operator << 20;
|
|
||||||
|
|
||||||
return $options;
|
|
||||||
}
|
|
||||||
|
|
||||||
function _getData()
|
|
||||||
{
|
|
||||||
$title_prompt_len = strlen($this->_title_prompt);
|
|
||||||
$descr_prompt_len = strlen($this->_descr_prompt);
|
|
||||||
$title_error_len = strlen($this->_title_error);
|
|
||||||
$descr_error_len = strlen($this->_descr_error);
|
|
||||||
|
|
||||||
$formula1_size = strlen($this->_formula1);
|
|
||||||
$formula2_size = strlen($this->_formula2);
|
|
||||||
|
|
||||||
$data = pack("V", $this->_getOptions());
|
|
||||||
$data .= pack("vC", $title_prompt_len, 0x00) . $this->_title_prompt;
|
|
||||||
$data .= pack("vC", $title_error_len, 0x00) . $this->_title_error;
|
|
||||||
$data .= pack("vC", $descr_prompt_len, 0x00) . $this->_descr_prompt;
|
|
||||||
$data .= pack("vC", $descr_error_len, 0x00) . $this->_descr_error;
|
|
||||||
|
|
||||||
$data .= pack("vv", $formula1_size, 0x0000) . $this->_formula1;
|
|
||||||
$data .= pack("vv", $formula2_size, 0x0000) . $this->_formula2;
|
|
||||||
|
|
||||||
return $data;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*class Spreadsheet_Excel_Writer_Validation_List extends Spreadsheet_Excel_Writer_Validation
|
|
||||||
{
|
|
||||||
function Spreadsheet_Excel_Writer_Validation_list()
|
|
||||||
{
|
|
||||||
parent::Spreadsheet_Excel_Writer_Validation();
|
|
||||||
$this->_type = 0x03;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setList($source, $incell = true)
|
|
||||||
{
|
|
||||||
$this->_incell = $incell;
|
|
||||||
$this->_fixedList = true;
|
|
||||||
|
|
||||||
$source = implode("\x00", $source);
|
|
||||||
$this->_formula1 = pack("CCC", 0x17, strlen($source), 0x0c) . $source;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setRow($row, $col1, $col2, $incell = true)
|
|
||||||
{
|
|
||||||
$this->_incell = $incell;
|
|
||||||
//$this->_formula1 = ...;
|
|
||||||
}
|
|
||||||
|
|
||||||
function setCol($col, $row1, $row2, $incell = true)
|
|
||||||
{
|
|
||||||
$this->_incell = $incell;
|
|
||||||
//$this->_formula1 = ...;
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
?>
|
|
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Datei-Diff unterdrückt, da er zu groß ist
Diff laden
Laden …
In neuem Issue referenzieren