심심해서 작성했습니다. 확장 기능이 마음에 드시면 잊지 말고 꼭 보내주세요. 하하, 감사합니다.
ps: 테스트가 효율적이지 않습니다. 하하~~
[email protected] PHP를 복사하세요. 콘텐츠를 클립보드에
PHP 코드:
<?php
/**
*COM 기반 엑셀 연산 클래스(PHP5.x)
*PHPer:TTR
*날짜:[2007-05-24]
*버전:1.0.0
*블로그:[url]http://www.Gx3.cn[/url] [url]http://Gx3.cn[/url]
*QQ:252319874
*/
엑셀 수업
{
정적 $인스턴스=null;
개인 $excel=null;
개인 $통합문서=null;
비공개 $workbookadd=null;
비공개 $워크시트=null;
비공개 $worksheetadd=null;
비공개 $sheetnum=1;
개인 $cells=배열();
비공개 $fields=배열();
비공개 $maxrows;
비공개 $maxcols;
개인 $파일명;
//생성자
개인 함수 Excel()
{
$this->excel = new COM("Excel.Application") 또는 die("연결되지 않음");
}
//클래스 항목
공개 정적 함수 getInstance()
{
if(null == self::$instance)
{
self::$instance = 새로운 Excel();
}
self::$instance를 반환합니다.
}
//파일 주소 설정
공개 함수 setFile($filename)
{
return $this->filename=$filename;
}
//파일 열기
공개 함수 Open()
{
$this->workbook=$this->excel->WorkBooks->Open($this->filename);
}
//시트 설정
공개 함수 setSheet($num=1)
{
if($num>0)
{
$this->시트번호=$num;
$this->worksheet=$this->excel->WorkSheets[$this->sheetnum];
$this->maxcols=$this->maxCols();
$this->maxrows=$this->maxRows();
$this->getCells();
}
}
//테이블에서 모든 값을 가져와서 배열에 씁니다.
개인 함수 getCells()
{
for($i=1;$i<$this->maxcols;$i++)
{
for($j=2;$j<$this->maxrows;$j++)
{
$this->셀[$this->워크시트->셀(1,$i)->값][]=(string)$this->워크시트->셀($j,$i)->값;
}
}
$this->셀을 반환합니다.
}
//테이블 내용 배열 반환
공개 함수 getAllData()
{
$this->셀을 반환합니다.
}
//지정된 셀 내용을 반환합니다.
공용 함수 셀($row,$col)
{
$this->워크시트->셀($row,$col)->값을 반환합니다.
}
//테이블 필드 이름 배열을 가져옵니다.
공개 함수 getFields()
{
for($i=1;$i<$this->maxcols;$i++)
{
$this->필드[]=$this->워크시트->셀(1,$i)->값;
}
$this->필드를 반환합니다.
}
//지정된 셀의 내용을 수정합니다.
공개 함수 editCell($row,$col,$value)
{
if($this->workbook==null || $this->worksheet==null)
{
echo "오류:연결되지 않았습니다!";
}또 다른{
$this->워크시트->셀($row,$col)->값=$value;
$this->통합문서->저장();
}
}
//데이터 행 수정
공개 함수 editOneRow($row,$arr)
{
if($this->workbook==null || $this->worksheet==null || $row>=2)
{
echo "오류:연결되지 않았습니다!";
}또 다른{
if(count($arr)==$this->maxcols-1)
{
$i=1;
foreach($arr를 $val로)
{
$this->워크시트->셀($row,$i)->값=$val;
$i++;
}
$this->통합문서->저장();
}
}
}
//총 열 수를 가져옵니다.
개인 함수 maxCols()
{
$i=1;
동안(사실)
{
if(0==$this->워크시트->셀(1,$i))
{
$i를 반환합니다.
부서지다;
}
$i++;
}
}
//총 행 수를 가져옵니다.
개인 함수 maxRows()
{
$i=1;
동안(사실)
{
if(0==$this->워크시트->셀($i,1))
{
$i를 반환합니다.
부서지다;
}
$i++;
}
}
//지정된 행 데이터를 읽습니다.
공개 함수 getOneRow($row=2)
{
if($행>=2)
{
for($i=1;$i<$this->maxcols;$i++)
{
$arr[]=$this->워크시트->셀($row,$i)->값;
}
$arr를 반환합니다;
}
}
//객체 닫기
공개 함수 닫기()
{
$this->excel->WorkBooks->Close();
$this->excel=null;
$this->통합문서=null;
$this->워크시트=null;
self::$instance=null;
}
}
/*
$excel = new COM("Excel.Application");
$workbook = $excel->WorkBooks->Open('D:\Apache2\htdocs\wwwroot\MyExcel.xls');
$worksheet = $excel->WorkSheets(1);
echo $worksheet->셀(2,6)->값;
$excel->WorkBooks->닫기();
*/
$excel=엑셀::getInstance();
$excel->setFile("D:\Apache2\htdocs\wwwroot\MyExcel.xls");
$엑셀->열기();
$excel->setSheet();
for($i=1;$i<16;$i++)
{
$arr[]=$i;
}
//$excel->editOneRow(2,$arr);
print_r($excel->getAllData());
$excel->닫기()
;