Chamilo is a learning management system focused on ease of use and accessibility
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
chamilo-lms/main/inc/lib/phpdocx/classes/CreateExcelSheet.inc

426 lines
11 KiB

<?php
/**
* Create excel sheet
*
* @category Phpdocx
* @package elements
* @copyright Copyright (c) 2009-2011 Narcea Producciones Multimedia S.L.
* (http://www.2mdc.com)
* @license LGPL
* @version 1.0
* @link http://www.phpdocx.com
* @since File available since Release 1.0
*/
include_once dirname(__FILE__) . '/CreateElement.inc';
/**
* Create excel sheet
*
* @category Phpdocx
* @package elements
* @copyright Copyright (c) 2009-2011 Narcea Producciones Multimedia S.L.
* (http://www.2mdc.com)
* @license http://www.phpdocx.com/wp-content/themes/lightword/pro_license.php
* @version 1.0
* @link http://www.phpdocx.com
* @since Class available since Release 1.0
*/
class CreateExcelSheet extends CreateElement
{
/**
*
* @var CreateExcelSheet
* @access private
* @static
*/
private static $_instance = NULL;
/**
* Construct
*
* @access public
*/
public function __construct()
{
}
/**
* Destruct
*
* @access public
*/
public function __destruct()
{
}
/**
*
* @return string
* @access public
*/
public function __toString()
{
return $this->_xml;
}
/**
*
* @return CreateExcelSheet
* @access public
* @static
*/
public static function getInstance()
{
if (self::$_instance == NULL) {
self::$_instance = new CreateExcelSheet();
}
return self::$_instance;
}
/**
* Create excel sheet
*
* @access public
* @param string $args[0]
* @param array $args[1]
*/
public function createExcelSheet()
{
$this->_xml = '';
$args = func_get_args();
$type = $args[1];
$dats = $args[0];
$sizeDats = count($dats);
foreach ($dats as $ind => $data) {
$sizeCols = count($data);
break;
}
$sizeDats = count($dats);
if (strpos($type, 'pie') !== false) {
$sizeCols = 1;
} else {
$sizeDats--;
}
$this->generateWORKSHEET();
$this->generateDIMENSION($sizeDats, $sizeCols);
$this->generateSHEETVIEWS();
$this->generateSHEETVIEW();
$this->generateSELECTION($sizeDats + $sizeCols);
$this->generateSHEETFORMATPR();
$this->generateCOLS();
$this->generateCOL();
$this->generateSHEETDATA();
$row = 1;
foreach ($dats as $ind => $val) {
$col = 1;
$letra = 'A';
$this->generateROW($row, $sizeCols);
$this->generateC($letra . $row, '', 's');
$this->generateV($sizeDats + $sizeCols);
$letra++;
foreach ($val as $valores) {
$this->generateC($letra . $row, '', 's');
$this->generateV($col - 1);
$col++;
$letra++;
}
$this->cleanTemplateROW();
$row++;
break;
}
foreach ($dats as $ind => $val) {
if ($ind == '0')
continue;
$this->generateROW($row, $sizeCols);
$col = 1;
$letra = 'A';
$this->generateC($letra . $row, 1, 's');
$this->generateV($sizeCols + $row - 2);
$letra++;
foreach ($val as $valores) {
$s = '';
if ($col != $sizeCols)
$s = 1;
$this->generateC($letra . $row, $s);
$this->generateV($valores);
$col++;
$letra++;
}
$row++;
$this->cleanTemplateROW();
}
$this->generateROW($row + 1, $sizeCols);
$row++;
$this->generateC('B' . $row, 2, 's');
$this->generateV($sizeDats + $sizeCols + 1);
$this->generatePAGEMARGINS();
$this->generateTABLEPARTS();
$this->generateTABLEPART(1);
$this->cleanTemplate();
}
/**
* Generate worksheet
*
* @access protected
*/
protected function generateWORKSHEET()
{
$this->_xml = '<?xml version="1.0" encoding="UTF-8" ' .
'standalone="yes" ?><worksheet ' .
'xmlns="http://schemas.openxmlformats.org/' .
'spreadsheetml/2006/main" ' . 'xmlns:r="http://schemas.' .
'openxmlformats.org/officeDocument/2006/relationships"' .
'>__GENERATEWORKSHEET__</worksheet>';
}
/**
* Generate dimension
*
* @param int $sizeX
* @param int $sizeY
* @access protected
*/
protected function generateDIMENSION($sizeX, $sizeY)
{
$char = 'A';
for ($i = 0; $i < $sizeY; $i++)
$char++;
$sizeX += $sizeY;
$xml = '<dimension ref="A1:' . $char . $sizeX .
'"></dimension>__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate sheetviews
*
* @access protected
*/
protected function generateSHEETVIEWS()
{
$xml = '<sheetViews>__GENERATESHEETVIEWS__' .
'</sheetViews>__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate sheetview
*
* @param string $tabSelected
* @param string $workbookViewId
* @access protected
*/
protected function generateSHEETVIEW($tabSelected = '1',
$workbookViewId = '0')
{
$xml = '<sheetView tabSelected="' . $tabSelected .
'" workbookViewId="' . $workbookViewId .
'">__GENERATESHEETVIEW__</sheetView>';
$this->_xml = str_replace('__GENERATESHEETVIEWS__', $xml, $this->_xml);
}
/**
* Generate selection
*
* @param string $num
* @access protected
*/
protected function generateSELECTION($num)
{
$xml = '<selection activeCell="B' . $num .
'" sqref="B' . $num . '"></selection>';
$this->_xml = str_replace('__GENERATESHEETVIEW__', $xml, $this->_xml);
}
/**
* Generate sheetformatpr
*
* @param string $baseColWidth
* @param string $defaultRowHeight
* @access protected
*/
protected function generateSHEETFORMATPR($baseColWidth = '10',
$defaultRowHeight = '15')
{
$xml = '<sheetFormatPr baseColWidth="' . $baseColWidth .
'" defaultRowHeight="' . $defaultRowHeight .
'"></sheetFormatPr>__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate cols
*
* @access protected
*/
protected function generateCOLS()
{
$xml = '<cols>__GENERATECOLS__</cols>__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate col
*
* @param string $min
* @param string $max
* @param string $width
* @param string $customWidth
* @access protected
*/
protected function generateCOL($min = '1', $max = '1',
$width = '11.85546875', $customWidth = '1')
{
$xml = '<col min="' . $min . '" max="' . $max . '" width="' . $width .
'" customWidth="' . $customWidth . '"></col>';
$this->_xml = str_replace('__GENERATECOLS__', $xml, $this->_xml);
}
/**
* Generate sheetdata
*
* @access protected
*/
protected function generateSHEETDATA()
{
$xml = '<sheetData>__GENERATESHEETDATA__</sheetData>' .
'__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate row
*
* @param string $r
* @param string $spans
* @access protected
*/
protected function generateROW($r, $spans)
{
$spans = '1:' . ($spans + 1);
$xml = '<row r="' . $r . '" spans="' . $spans .
'">__GENERATEROW__</row>__GENERATESHEETDATA__';
$this->_xml = str_replace('__GENERATESHEETDATA__', $xml, $this->_xml);
}
/**
* Generate c
*
* @param string $r
* @param string $s
* @param string $t
* @access protected
*/
protected function generateC($r, $s, $t = '')
{
$xmlAux = '<c r="' . $r . '"';
if ($s != '') {
$xmlAux .= ' s="' . $s . '"';
}
if ($t != '') {
$xmlAux .= ' t="' . $t . '"';
}
$xmlAux .= '>__GENERATEC__</c>__GENERATEROW__';
$this->_xml = str_replace('__GENERATEROW__', $xmlAux, $this->_xml);
}
/**
* Generate v
*
* @param string $num
* @access protected
*/
protected function generateV($num)
{
$this->_xml = str_replace(
'__GENERATEC__', '<v>' . $num . '</v>', $this->_xml
);
}
/**
* Generate pagemargins
*
* @param string $left
* @param string $rigth
* @param string $bottom
* @param string $top
* @param string $header
* @param string $footer
* @access protected
*/
protected function generatePAGEMARGINS($left = '0.7', $rigth = '0.7',
$bottom = '0.75', $top = '0.75',
$header = '0.3', $footer = '0.3')
{
$xml = '<pageMargins left="' . $left . '" right="' . $rigth .
'" top="' . $top . '" bottom="' . $bottom .
'" header="' . $header . '" footer="' . $footer .
'"></pageMargins>__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate pagesetup
*
* @param string $paperSize
* @param string $orientation
* @param string $id
* @access protected
*/
protected function generatePAGESETUP($paperSize = '9',
$orientation = 'portrait', $id = '1')
{
$xml = '<pageSetup paperSize="' . $paperSize .
'" orientation="' . $orientation . '" r:id="rId' . $id .
'"></pageSetup>__GENERATEWORKSHEET__';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate tableparts
*
* @param string $count
* @access protected
*/
protected function generateTABLEPARTS($count = '1')
{
$xml = '<tableParts count="' . $count .
'">__GENERATETABLEPARTS__</tableParts>';
$this->_xml = str_replace('__GENERATEWORKSHEET__', $xml, $this->_xml);
}
/**
* Generate tablepart
*
* @param string $id
* @access protected
*/
protected function generateTABLEPART($id = '1')
{
$xml = '<tablePart r:id="rId' . $id . '"></tablePart>';
$this->_xml = str_replace('__GENERATETABLEPARTS__', $xml, $this->_xml);
}
/**
* Clean template row tags
*
* @access private
*/
private function cleanTemplateROW()
{
$this->_xml = str_replace('__GENERATEROW__', '', $this->_xml);
}
}