init
This commit is contained in:
425
modules/EcmPriceKopias/excel.php
Normal file
425
modules/EcmPriceKopias/excel.php
Normal file
@@ -0,0 +1,425 @@
|
||||
<?php
|
||||
/* Class for use with PHP4 scripts only*/
|
||||
|
||||
|
||||
/*
|
||||
* This is an Excel class to create,load,read,write,save and use some of the internal
|
||||
* functionalities of workbooks and sheets.
|
||||
* Tested with Windows 98 - MS Office 2000
|
||||
* Apache 1.3.9 PHP4.02 Running as CGI
|
||||
* (c) Alain M. Samoun 09/2000.
|
||||
* alain@sonic.net
|
||||
* Gnu GPL code (see www.fsf.org for more information).
|
||||
*/
|
||||
|
||||
|
||||
class Excel {
|
||||
|
||||
/* variables */
|
||||
|
||||
var $ex;
|
||||
var $pathin;
|
||||
var $pathout;
|
||||
var $workbook;
|
||||
var $sheet;
|
||||
var $visible;
|
||||
var $fformatin;
|
||||
var $fformatout;
|
||||
var $cell;
|
||||
var $rangesens;
|
||||
var $range;
|
||||
var $ext;
|
||||
var $oext;
|
||||
|
||||
|
||||
/* Constructor */
|
||||
|
||||
function excel()
|
||||
{
|
||||
#Instantiate Excel
|
||||
//$this->ex = new COM("Excel.sheet") or Die ("Did not instantiate Excel");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
function XL($workbook,$pathin="",$sheet="sheet1")
|
||||
{
|
||||
|
||||
if ($workbook != "")
|
||||
{
|
||||
#Load the workbook
|
||||
$wkb = $this->ex->application->Workbooks->Open($pathin.$workbook) or Die ("Did not open $pathin $workbook");
|
||||
|
||||
}else{
|
||||
#New workbook
|
||||
$wkb = $this->ex->application->Workbooks->Add or Die ("Unable to add a workbook");
|
||||
}
|
||||
|
||||
if ($sheet != "")
|
||||
{
|
||||
#Activate the sheet
|
||||
$sheets = $wkb->Worksheets($sheet) or Die ("Unable to activate $sheet");
|
||||
|
||||
}else{
|
||||
#new sheet
|
||||
$sheet = "sheet1" ;
|
||||
|
||||
}
|
||||
#Excel Won't prompt the user when replacing or closing workbooks
|
||||
#Comment the line below if you want Excel to prompt
|
||||
$this->ex->application->DisplayAlerts = "False";
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function readrange($sheet="sheet1",$range)
|
||||
{
|
||||
|
||||
#Read all the cells in the range to $result and return it
|
||||
unset ($result);
|
||||
|
||||
$range = trim($range);
|
||||
#Determine start and end of range
|
||||
$tokstart = strtok($range,":");
|
||||
$tokend = strtok(":");
|
||||
if ($tokend =="")
|
||||
{
|
||||
#Read one single cell
|
||||
$sheets = $this->ex->Application->Worksheets($sheet);
|
||||
$sheets->activate;
|
||||
#Select the cell
|
||||
$selcell = $sheets->Range($range);
|
||||
$selcell->activate;
|
||||
return $selcell->value;
|
||||
}
|
||||
#Read a range of cells
|
||||
#determine column and row numbers
|
||||
$sheets = $this->ex->Application->Worksheets($sheet);
|
||||
$sheets->activate;
|
||||
$rgstart = $sheets->range($tokstart);
|
||||
$colstart = $rgstart->column;
|
||||
$rowstart = $rgstart->row;
|
||||
$rgend = $sheets->range($tokend);
|
||||
$colend = $rgend->column;
|
||||
$rowend = $rgend->row;
|
||||
if ($colstart>$colend or $rowstart>$rowend)
|
||||
{
|
||||
Print ("Notation Error! Cell Column/Row should be increasing.");
|
||||
return;
|
||||
}
|
||||
#Now read each cell
|
||||
|
||||
if ($colstart == $colend)
|
||||
{
|
||||
#Read Vertically
|
||||
$j=0;
|
||||
For ($i= $rowstart; $i<=$rowend; $i++)
|
||||
{
|
||||
|
||||
$selcell = $sheets->cells($i,$colstart);
|
||||
$selcell->activate;
|
||||
$result[$j] = $selcell->value;
|
||||
$j++;
|
||||
}
|
||||
}else
|
||||
{
|
||||
#Read horizontally
|
||||
$j=0;
|
||||
For ($i= $colstart; $i<=$colend; $i++)
|
||||
{
|
||||
|
||||
$selcell = $sheets->cells($rowstart,$i);
|
||||
$selcell->activate;
|
||||
$result[$j] = $selcell->value;
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function writerange($sheet="sheet1",$range,$value)
|
||||
{
|
||||
|
||||
#Fill up all the cells in the range with array
|
||||
|
||||
$range = trim($range);
|
||||
#Determine start and end of range
|
||||
$tokstart = strtok($range,":");
|
||||
$tokend = strtok(":");
|
||||
if ($tokend =="")
|
||||
{
|
||||
|
||||
# Write to a single cell in the active sheet
|
||||
$cell = trim($range);
|
||||
#Select the sheet
|
||||
$sheets = $this->ex->Application->Worksheets($sheet);
|
||||
$sheets->activate;
|
||||
#Select the cell
|
||||
$selcell = $sheets->Range($cell);
|
||||
$selcell->activate;
|
||||
$selcell->value = $value;
|
||||
return;
|
||||
}
|
||||
|
||||
#determine column and row numbers
|
||||
$sheets = $this->ex->Application->Worksheets($sheet);
|
||||
$sheets->activate;
|
||||
$rgstart = $sheets->range($tokstart);
|
||||
$colstart = $rgstart->column;
|
||||
$rowstart = $rgstart->row;
|
||||
$rgend = $sheets->range($tokend);
|
||||
$colend = $rgend->column;
|
||||
$rowend = $rgend->row;
|
||||
if ($colstart>$colend or $rowstart>$rowend)
|
||||
{
|
||||
Print ("Notation Error! Cell Column/Row should be increasing.");
|
||||
return;
|
||||
}
|
||||
#Now write each cell
|
||||
|
||||
if ($colstart == $colend)
|
||||
{
|
||||
#write Vertically
|
||||
$j=0;
|
||||
For ($i= $rowstart; $i<=$rowend; $i++)
|
||||
{
|
||||
|
||||
$selcell = $sheets->cells($i,$colstart);
|
||||
$selcell->activate;
|
||||
$selcell->value = $value[$j];
|
||||
$j++;
|
||||
}
|
||||
}else
|
||||
{
|
||||
#Write horizontally
|
||||
$j=0;
|
||||
For ($i= $colstart; $i<=$colend; $i++)
|
||||
{
|
||||
|
||||
$selcell = $sheets->cells($rowstart,$i);
|
||||
$selcell->activate;
|
||||
$selcell->value = $value[$j];
|
||||
$j++;
|
||||
}
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
function saveas($workbook,$pathout,$ext)
|
||||
{
|
||||
|
||||
|
||||
#First get the file format code for the extension $ext
|
||||
$code = $this->fileformater($ext);
|
||||
$basefile = strtok($workbook,".");
|
||||
$newworkbook = $basefile."."."$ext";
|
||||
|
||||
|
||||
#If no prompt and file exists it will be replaced.
|
||||
|
||||
|
||||
#Save the current workbook as new workbook
|
||||
#The following line will work for converting spreadsheets file to xls
|
||||
#but if the original is an excel file and the new file another format
|
||||
#then it may not work because limitations of excel.(See excel doc)
|
||||
|
||||
$this->ex->Application->ActiveWorkbook->SaveAS($pathout.$newworkbook,$code);
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function fileformater($ext)
|
||||
{
|
||||
|
||||
switch(strtolower($ext))
|
||||
{
|
||||
|
||||
case "slk":
|
||||
return 2;
|
||||
break;
|
||||
|
||||
case "xlt":
|
||||
return -4143;
|
||||
break;
|
||||
|
||||
case "txt":
|
||||
return -4158;
|
||||
break;
|
||||
|
||||
case "csv":
|
||||
return 6;
|
||||
break;
|
||||
|
||||
case "xlw":
|
||||
return 35;
|
||||
break;
|
||||
|
||||
case "w4k":
|
||||
return 38;
|
||||
break;
|
||||
|
||||
case "wq1":
|
||||
return 34;
|
||||
break;
|
||||
|
||||
case "prn":
|
||||
return -4158;
|
||||
break;
|
||||
|
||||
case "dif":
|
||||
return 9;
|
||||
break;
|
||||
|
||||
case "xla":
|
||||
return -4143;
|
||||
break;
|
||||
|
||||
case "wk3":
|
||||
return 32;
|
||||
break;
|
||||
|
||||
case "xls":
|
||||
return -4143;
|
||||
break;
|
||||
|
||||
case "htm":
|
||||
return 44;
|
||||
break;
|
||||
|
||||
case "wks":
|
||||
return 4;
|
||||
break;
|
||||
|
||||
default:
|
||||
return -4143;
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function XLTranslate($pathin,$pathout,$oext,$ext,$kill=0)
|
||||
{
|
||||
|
||||
#This function will translate automatically all spreadsheets files, with the
|
||||
#$oext extension, in the $pathin directory, to another spreadsheet file,
|
||||
#with the $ext extension, to the $pathout directory.
|
||||
#It will erase the original file if $kill switch = 1.
|
||||
#Limitations: Will work always when translating none excel files to
|
||||
#excel files(Extension=xl*) and with the translation xls->htm . It will
|
||||
#not generally work when translating excel files to other formats because
|
||||
#the questions asked by the excel program stop the script.
|
||||
|
||||
#Get all files in the source directory $pathin to the $filelist array
|
||||
chdir($pathin);
|
||||
$dir=dir (".");
|
||||
$i=1;
|
||||
while($file=$dir->read())
|
||||
{
|
||||
$filelist [$i] = $file;
|
||||
$i++;
|
||||
}
|
||||
$dir->close;
|
||||
|
||||
#Translate each file, with the original extension $oext, in the $filelist
|
||||
#to the needed extension $ext.
|
||||
|
||||
for ($i=1;$i<= sizeof($filelist); $i++)
|
||||
{
|
||||
|
||||
$file = $filelist[$i];
|
||||
|
||||
$basefile = strtok($file,".");
|
||||
$extension = strtok(".");
|
||||
|
||||
|
||||
if (strtolower($extension) == strtolower($oext))
|
||||
{
|
||||
echo "<BR> $file";
|
||||
$this->XL($file,$pathin,$sheet="");
|
||||
$this->saveas($file,$pathout,$ext,"");
|
||||
#Erase the original file if $kill=1
|
||||
if ($kill)
|
||||
{
|
||||
chmod ($file,0777);
|
||||
unlink ($pathin.$file);
|
||||
}
|
||||
#Close the new workbook
|
||||
$this->closeXL();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function closexl()
|
||||
{
|
||||
|
||||
#Close active workbook without prompt from Excel
|
||||
|
||||
$this->ex->application->ActiveWorkbook->Close("False");
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
function runfunction($funct,$arrayparam)
|
||||
{
|
||||
#Run and return value of an excel function
|
||||
|
||||
$params = implode(",",$arrayparam);
|
||||
|
||||
eval ("\$result = \$this->ex->application->$funct($params);");
|
||||
|
||||
return $result;
|
||||
|
||||
}
|
||||
|
||||
Function runmacro($workbook,$macroname)
|
||||
{
|
||||
$this->ex->application->Run("$workbook!$macroname");
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
Function createhyperlink($sheet="sheet1",$cell,$hyperl)
|
||||
{
|
||||
#Not working as 9/2/00 4:57PM
|
||||
print "<br>link = $hyperl <br>";
|
||||
$sheets = $this->ex->Application->Worksheets($sheet);
|
||||
$sheets->activate;
|
||||
#Select the cell
|
||||
$selcell = $sheets->Range($cell);
|
||||
|
||||
$sheets->hyperlinks->add($selcell,$hyperl);
|
||||
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
function calculate($sheet="sheet1")
|
||||
{
|
||||
#Calculate (update) the current sheet
|
||||
$sheets = $this->ex->Application->Worksheets($sheet); #Select the sheet
|
||||
$sheets->activate;
|
||||
$sheets->Calculate;
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
} /* end of Excel class */
|
||||
|
||||
?>
|
||||
Reference in New Issue
Block a user