Ver Mensaje Individual
  #3 (permalink)  
Antiguo 03/03/2005, 12:52
masterhades
 
Fecha de Ingreso: agosto-2004
Mensajes: 258
Antigüedad: 19 años, 8 meses
Puntos: 0
De acuerdo

esta es la clase, hum voy a revisar la FAQ, gracias

Código PHP:
Clase para crear y modificar un archivo Excel desde PHP

2002-03-22
1876 lecturas 

Esta clase de PHP permite crear, cargar, leer, escribir y grabar en libros y hojas de Microsoft Excel. 
 

<?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. 
[email protected] 
* 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
var 
$error 0
var 
$msg_error

/* Constructor */ 
function excel() 

#Instantiate Excel 
$this->ex = new COM("Excel.Application") or $this->error 1
if (
$this->get_error()==0
return 
true
else 
return 
false


function 
XL($workbook,$pathin="",$sheet="Hoja1"

if (
$workbook != ""

#Load the workbook 
$wkb = @$this->ex->application->Workbooks->Open($pathin.$workbook) or $this->error 2
}else{ 
#New workbook 
$wkb = @$this->ex->application->Workbooks->Add or $this->error 3

if (
$this->error==0
if (
$sheet != ""

#Activate the sheet 
$sheets = @$wkb->Worksheets($sheet) or $this->error 4
}else{ 
#new sheet 
$sheet "Hoja1" 

#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"; 
if ($this->get_error()==0
return 
true
else 
return 
false


function 
readrange($sheet="Hoja1",$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="Hoja1",$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="Hoja1",$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="Hoja1"

#Calculate (update) the current sheet 
$sheets $this->ex->Application->Worksheets($sheet); #Select the sheet 
$sheets->activate
$sheets->Calculate
return 
1


function 
get_error() 

return 
$this->error


function 
set_error($id_error

$this->error $id_error


function 
get_msg_error($id_error

switch(
$id_error

// case 1: return "Did not instantiate Excel"; 
case 1: return "No se puede abrir el fichero Excel"
// case 2: return "Did not open $pathin $workbook"; 
case 2: return "No se puede abrir el fichero Excel seleccionado"
// case 3: return "Unable to add a workbook"; 
case 3: return "Unable to add a workbook"
// case 4: return "Unable to activate $sheet"; 
case 4: return "No se puede abrir el fichero Excel seleccionado"


/* end of Excel class */ 
?>