Acabei de escrever isso por tédio. Se você gosta de extensões, não se esqueça de me enviar uma cópia Haha, obrigado.
PS: O teste não é eficiente, haha ~~~
[email protected] Copie o PHP. conteúdo para a área de transferência
Código PHP:
<?php
/**
*Classe de operação Excel baseada em COM (PHP5.x)
*PHPer:TTR
*Data:[24/05/2007]
*Ver:1.0.0
*Blog:[url]http://www.Gx3.cn[/url] [url]http://Gx3.cn[/url]
*PQ:252319874
*/
classe Excel
{
static $instancia=null;
privado $excel=nulo;
private $ pasta de trabalho = null;
private $workbookadd=null;
private $planilha=null;
private $worksheetadd=null;
private $sheetnum=1;
private $células=array();
private $campos=array();
privado $maxrows;
private $maxcols;
private $nome do arquivo;
//Construtor
função privada Excel()
{
$this->excel = new COM("Excel.Application") ou die("Não conectou");
}
//Entrada na aula
função estática pública getInstance()
{
if(null == self::$instance)
{
self::$instance = new Excel();
}
return self::$instancia;
}
//Definir endereço do arquivo
função pública setFile($nome do arquivo)
{
return $this->nomedoarquivo=$nomedoarquivo;
}
//Abrir arquivo
função pública Abrir()
{
$this->workbook=$this->excel->WorkBooks->Open($this->nome do arquivo);
}
//Definir planilha
função pública setSheet($num=1)
{
if($num>0)
{
$this->sheetnum=$num;
$this->planilha=$this->excel->Planilhas[$this->sheetnum];
$this->maxcols=$this->maxCols();
$this->maxrows=$this->maxRows();
$this->getCells();
}
}
//Obtém todos os valores da tabela e escreve-os no array
função privada getCells()
{
for($i=1;$i<$this->maxcols;$i++)
{
for($j=2;$j<$this->maxrows;$j++)
{
$this->células[$this->planilha->Células(1,$i)->valor][]=(string)$this->planilha->Células($j,$i)->valor;
}
}
retorne $this->células;
}
//Retorna array de conteúdo da tabela
função pública getAllData()
{
retorne $this->células;
}
//Retorna o conteúdo da célula especificada
função pública Célula($linha,$col)
{
return $this->planilha->Células($linha,$col)->Valor;
}
//Obtém o array de nomes de campos da tabela
função pública getFields()
{
for($i=1;$i<$this->maxcols;$i++)
{
$this->campos[]=$this->planilha->Células(1,$i)->valor;
}
return $this->campos;
}
//Modifica o conteúdo da célula especificada
função pública editCell($linha,$col,$valor)
{
if($this->pasta de trabalho==null || $this->planilha==null)
{
echo "Erro: Não foi possível conectar!";
}outro{
$this->planilha->Células($linha,$col)->Valor=$valor;
$this->pasta de trabalho->Salvar();
}
}
//Modifica uma linha de dados
função pública editOneRow($row,$arr)
{
if($this->workbook==null || $this->worksheet==null || $row>=2)
{
echo "Erro: Não foi possível conectar!";
}outro{
if(contagem($arr)==$this->maxcols-1)
{
$i=1;
foreach($arr como $val)
{
$this->planilha->Células($linha,$i)->Valor=$val;
$eu++;
}
$this->pasta de trabalho->Salvar();
}
}
}
//Obtém o número total de colunas
função privada maxCols()
{
$i=1;
enquanto (verdadeiro)
{
if(0==$this->planilha->Células(1,$i))
{
retornar $i;
quebrar;
}
$eu++;
}
}
//Obtém o número total de linhas
função privada maxRows()
{
$i=1;
enquanto (verdadeiro)
{
if(0==$this->planilha->Células($i,1))
{
retornar $i;
quebrar;
}
$eu++;
}
}
//Lê os dados da linha especificada
função pública getOneRow($row=2)
{
if($linha>=2)
{
for($i=1;$i<$this->maxcols;$i++)
{
$arr[]=$this->planilha->Células($linha,$i)->Valor;
}
retornar $arr;
}
}
//Fecha o objeto
função pública Fechar()
{
$this->excel->WorkBooks->Fechar();
$this->excel=null;
$this->pasta de trabalho=null;
$this->planilha=null;
self::$instance=null;
}
};
/*
$excel = new COM("Excel.Aplicativo");
$workbook = $excel->WorkBooks->Open('D:\Apache2\htdocs\wwwroot\MyExcel.xls');
$planilha = $excel->Planilhas(1);
echo $planilha->Células(2,6)->Valor;
$excel->WorkBooks->Fechar();
*/
$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->Fechar()
;