Escribí esto por aburrimiento. Si te gustan las extensiones, no olvides enviarme una copia Jaja, gracias.
P.D.: La prueba no es eficiente, jaja ~~~
[email protected] Copia el PHP. contenido al portapapeles
Código PHP:
<?php
/**
*Clase de operación de Excel basada en COM (PHP5.x)
* PHPer: TTR
*Fecha:[2007-05-24]
*Versión:1.0.0
*Blog:[url]http://www.Gx3.cn[/url] [url]http://Gx3.cn[/url]
*QQ:252319874
*/
clase excel
{
estática $instancia=null;
privado $excel=null;
privado $libro de trabajo=null;
privado $workbookadd=null;
privado $hoja de trabajo=nulo;
privado $hoja de trabajoadd=null;
privado $sheetnum=1;
privado $celdas=matriz();
privado $campos=matriz();
$maxrows privados;
$maxcols privados;
privado $nombre de archivo;
//Constructor
función privada Excel()
{
$this->excel = new COM("Excel.Application") o die("No se conectó");
}
//entrada de clase
función estática pública getInstance()
{
si(nulo == self::$instancia)
{
self::$instancia = nuevo Excel();
}
return self::$instancia;
}
//Establecer dirección de archivo
función pública setFile($nombre de archivo)
{
return $this->nombredearchivo=$nombredearchivo;
}
//Abrir archivo
función pública abierta()
{
$this->workbook=$this->excel->WorkBooks->Open($this->nombre de archivo);
}
//Establecer hoja
función pública setSheet($num=1)
{
si ($num>0)
{
$this->sheetnum=$num;
$this->worksheet=$this->excel->WorkSheets[$this->sheetnum];
$this->maxcols=$this->maxCols();
$this->maxrows=$this->maxRows();
$this->getCells();
}
}
//Obtiene todos los valores de la tabla y los escribe en la matriz
función privada getCells()
{
para($i=1;$i<$this->maxcols;$i++)
{
para($j=2;$j<$this->maxrows;$j++)
{
$this->cells[$this->worksheet->Cells(1,$i)->value][]=(string)$this->worksheet->Cells($j,$i)->value;
}
}
devolver $this->celdas;
}
//Devolver matriz de contenido de la tabla
función pública getAllData()
{
devolver $this->celdas;
}
//Devuelve el contenido de la celda especificada
función pública Celda ($ fila, $ col)
{
return $this->hoja de trabajo->Celdas($fila,$col)->Valor;
}
//Obtener la matriz de nombres de campos de la tabla
función pública getFields()
{
para($i=1;$i<$this->maxcols;$i++)
{
$this->fields[]=$this->worksheet->Cells(1,$i)->value;
}
devolver $this->campos;
}
//Modifica el contenido de la celda especificada
función pública editarCell($fila,$col,$valor)
{
if($this->workbook==null || $this->worksheet==null)
{
echo "Error: ¡No se conectó!";
}demás{
$this->hoja de trabajo->Celdas($fila,$col)->Valor=$valor;
$this->libro de trabajo->Guardar();
}
}
//Modificar una fila de datos
función pública editOneRow($fila,$arr)
{
if($this->workbook==null || $this->worksheet==null || $fila>=2)
{
echo "Error: ¡No se conectó!";
}demás{
si(cuenta($arr)==$this->maxcols-1)
{
$yo=1;
foreach($arr como $val)
{
$this->hoja de trabajo->Celdas($fila,$i)->Valor=$val;
$yo++;
}
$this->libro de trabajo->Guardar();
}
}
}
//Obtener el número total de columnas
función privada maxCols()
{
$yo=1;
mientras (verdadero)
{
if(0==$this->worksheet->Cells(1,$i))
{
devolver $i;
romper;
}
$yo++;
}
}
//Obtener el número total de filas
función privada maxRows()
{
$yo=1;
mientras (verdadero)
{
if(0==$this->worksheet->Cells($i,1))
{
devolver $i;
romper;
}
$yo++;
}
}
//Leer los datos de la fila especificada
función pública getOneRow($fila=2)
{
si($fila>=2)
{
para($i=1;$i<$this->maxcols;$i++)
{
$arr[]=$esta->hoja de trabajo->Celdas($fila,$i)->Valor;
}
devolver $arr;
}
}
//Cerrar el objeto
función pública Cerrar()
{
$this->excel->WorkBooks->Close();
$this->excel=null;
$this->libro de trabajo=null;
$this->worksheet=null;
self::$instancia=null;
}
};
/*
$excel = nuevo COM("Excel.Aplicación");
$libro de trabajo = $excel->Libros de trabajo->Open('D:\Apache2\htdocs\wwwroot\MyExcel.xls');
$hoja de trabajo = $excel->Hojas de trabajo(1);
echo $hoja de trabajo->Celdas(2,6)->Valor;
$excel->Libros de trabajo->Cerrar();
*/
$excel=Excel::getInstance();
$excel->setFile("D:\Apache2\htdocs\wwwroot\MyExcel.xls");
$excel->Abrir();
$excel->setSheet();
para($i=1;$i<16;$i++)
{
$arr[]=$i;
}
//$excel->editOneRow(2,$arr);
print_r($excel->getAllData());
$excel->Cerrar();
?>