2006-01-27 21:52:56 +01:00
< ? php
2008-03-30 17:36:19 +02:00
/* Copyright ( C ) 2006 - 2008 Laurent Destailleur < eldy @ users . sourceforge . net >
2006-01-27 21:52:56 +01:00
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 2 of the License , or
* ( at your option ) any later version .
*
* This program 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 General Public License for more details .
*
* You should have received a copy of the GNU General Public License
* along with this program ; if not , write to the Free Software
* Foundation , Inc . , 59 Temple Place - Suite 330 , Boston , MA 02111 - 1307 , USA .
* or see http :// www . gnu . org /
*/
/**
\file htdocs / includes / modules / export / export_excel . modules . php
\ingroup export
2007-09-08 20:50:17 +02:00
\brief Fichier de la classe permettant de g<EFBFBD> n<EFBFBD> rer les export au format Excel
2006-01-27 21:52:56 +01:00
\author Laurent Destailleur
2008-03-30 17:36:19 +02:00
\version $Id $
2006-01-27 21:52:56 +01:00
*/
require_once ( DOL_DOCUMENT_ROOT . " /includes/modules/export/modules_export.php " );
2006-09-16 14:14:36 +02:00
require_once ( PHP_WRITEEXCEL_PATH . " /class.writeexcel_workbookbig.inc.php " );
require_once ( PHP_WRITEEXCEL_PATH . " /class.writeexcel_worksheet.inc.php " );
2008-05-17 02:14:03 +02:00
require_once ( PHP_WRITEEXCEL_PATH . " /functions.writeexcel_utility.inc.php " );
2006-01-27 21:52:56 +01:00
/**
2007-09-08 20:50:17 +02:00
\class ExportExcel
\brief Classe permettant de g<EFBFBD> n<EFBFBD> rer les export au format Excel
2006-01-27 21:52:56 +01:00
*/
class ExportExcel extends ModeleExports
{
var $id ;
var $label ;
var $extension ;
var $version ;
var $label_lib ;
var $version_lib ;
var $workbook ; // Handle fichier
var $worksheet ; // Handle onglet
2006-02-25 14:29:03 +01:00
var $row ;
var $col ;
2006-01-27 21:52:56 +01:00
/**
\brief Constructeur
\param db Handler acc<EFBFBD> s base de donn<EFBFBD> e
*/
function ExportExcel ( $db )
{
global $conf , $langs ;
$this -> db = $db ;
$this -> id = 'excel' ; // Same value then xxx in file name export_xxx.modules.php
$this -> label = 'Excel' ; // Label of driver
$this -> extension = 'xls' ; // Extension for generated file by this driver
$ver = split ( ' ' , '$Revision$' );
$this -> version = $ver [ 2 ]; // Driver version
// If driver use an external library, put its name here
$this -> label_lib = 'Php_WriteExcel' ;
2006-03-18 00:27:30 +01:00
$this -> version_lib = '0.3.0' ;
2006-02-25 14:29:03 +01:00
$this -> row = 0 ;
2006-01-27 21:52:56 +01:00
}
function getDriverId ()
{
return $this -> id ;
}
function getDriverLabel ()
{
return $this -> label ;
}
function getDriverExtension ()
{
return $this -> extension ;
}
function getDriverVersion ()
{
return $this -> version ;
}
function getLibLabel ()
{
return $this -> label_lib ;
}
function getLibVersion ()
{
return $this -> version_lib ;
}
2008-03-30 17:49:25 +02:00
/**
* \brief Open output file
* \param file Path of filename
* \return int < 0 if KO , >= 0 if OK
*/
2006-01-27 21:52:56 +01:00
function open_file ( $file )
{
2007-09-08 20:50:17 +02:00
global $langs ;
2008-03-30 17:49:25 +02:00
dolibarr_syslog ( " ExportExcel::open_file file= " . $file );
$ret = 1 ;
2007-09-08 20:50:17 +02:00
$langs -> load ( " exports " );
2006-01-27 21:52:56 +01:00
$this -> workbook = & new writeexcel_workbookbig ( $file );
2007-09-08 20:50:17 +02:00
$this -> workbook -> set_sheetname ( $langs -> trans ( " Sheet " ));
2006-01-27 21:52:56 +01:00
$this -> worksheet = & $this -> workbook -> addworksheet ();
// $this->worksheet->set_column(0, 50, 18);
2008-05-17 02:14:03 +02:00
return $ret ;
2006-01-27 21:52:56 +01:00
}
function write_header ( $langs )
{
return 0 ;
}
function write_title ( $array_export_fields_label , $array_selected_sorted , $langs )
{
2006-02-25 14:29:03 +01:00
global $langs ;
2008-05-17 02:14:03 +02:00
// Create a format for the column headings
$formatheader = $this -> workbook -> addformat ();
$formatheader -> set_bold ();
$formatheader -> set_color ( 'blue' );
//$formatheader->set_size(12);
//$formatheader->set_font("Courier New");
//$formatheader->set_align('center');
//$this->worksheet->insert_bitmap('A1', 'php.bmp', 16, 8);
$this -> col = 0 ;
2006-02-25 14:29:03 +01:00
foreach ( $array_selected_sorted as $code => $value )
{
$alias = $array_export_fields_label [ $code ];
//print "dd".$alias;
2008-05-17 02:14:03 +02:00
$this -> worksheet -> write ( $this -> row , $this -> col , $langs -> transnoentities ( $alias ), $formatheader );
2006-02-25 14:29:03 +01:00
$this -> col ++ ;
}
$this -> row ++ ;
2006-01-27 21:52:56 +01:00
return 0 ;
}
function write_record ( $array_alias , $array_selected_sorted , $objp )
{
2007-09-09 18:30:01 +02:00
global $langs ;
2007-07-01 13:51:55 +02:00
2008-05-17 02:14:03 +02:00
$formatdate = $this -> workbook -> addformat ();
$formatdate -> set_num_format ( 'yyyy-mm-dd' );
//$formatdate->set_num_format(0x0f);
$formatdatehour = $this -> workbook -> addformat ();
$formatdatehour -> set_num_format ( 'yyyy-mm-dd hh:mm:ss' );
//$formatdatehour->set_num_format(0x0f);
2007-09-09 18:30:01 +02:00
$this -> col = 0 ;
foreach ( $array_selected_sorted as $code => $value )
{
$alias = $array_alias [ $code ];
$newvalue = $objp -> $alias ;
// Nettoyage newvalue
$newvalue = clean_html ( $newvalue );
// Traduction newvalue
if ( eregi ( '^\((.*)\)$' , $newvalue , $reg ))
2006-01-27 21:52:56 +01:00
{
2007-09-09 18:30:01 +02:00
$newvalue = $langs -> transnoentities ( $reg [ 1 ]);
}
2008-05-17 02:14:03 +02:00
if ( eregi ( '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]$' , $newvalue ))
{
$arrayvalue = split ( '[\.,]' , xl_parse_date ( $newvalue ));
//print "x".$arrayvalue[0].'.'.strval($arrayvalue[1]).'<br>';
$newvalue = strval ( $arrayvalue [ 0 ]) . '.' . strval ( $arrayvalue [ 1 ]); // $newvalue=strval(36892.521); directly does not work because . will be convert into , later
$this -> worksheet -> write ( $this -> row , $this -> col , $newvalue , $formatdate );
}
elseif ( eregi ( '^[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9] [0-9][0-9]:[0-9][0-9]:[0-9][0-9]$' , $newvalue ))
{
$arrayvalue = split ( '[\.,]' , xl_parse_date ( $newvalue ));
//print "x".$arrayvalue[0].'.'.strval($arrayvalue[1]).'<br>';
$newvalue = strval ( $arrayvalue [ 0 ]) . '.' . strval ( $arrayvalue [ 1 ]); // $newvalue=strval(36892.521); directly does not work because . will be convert into , later
$this -> worksheet -> write ( $this -> row , $this -> col , $newvalue , $formatdatehour );
}
else
{
$this -> worksheet -> write ( $this -> row , $this -> col , $newvalue );
}
2007-09-09 18:30:01 +02:00
$this -> col ++ ;
}
$this -> row ++ ;
return 0 ;
2006-01-27 21:52:56 +01:00
}
function write_footer ( $langs )
{
return 0 ;
}
function close_file ()
{
$this -> workbook -> close ();
return 0 ;
}
}
?>