<?php
$exapp = new COM("Excel.application") or Die ("Did not connect");
$wkb=$exapp->Workbooks->add();
$ex->Application->Visible = 1;
$sheets = $wkb->Worksheets(1); //选择第一个sheet
$sheets->activate; //激活
$sheets->name="Report First page";//更名
//填充单元格
$maxi=20;
$m=1;
for ($i=1;$i<$maxi;$i++) {
for($n=1;$n<5;$n++){
$cell = $sheets->Cells($i,$n) ; #Select the cell (Row Column number) $cell->activate;
$cell->value = $m;
$m++;
}
}
//画图
$ch = $sheets->chartobjects->add(50, 40, 400, 100); #作图
$chartje = $ch->chart;
$chartje->activate;
$chartje->ChartType=63;
$selected = $sheets->range("E1:E$maxi");
$chartje->setsourcedata($selected);
//存盘
$file_name="D:/test.xls"; //路径
if (file_exists($file_name)) {@unlink($file_name) or die("文件已经存在,并无法删除!");}
$wkb->SaveAs($file_name); //save
$exapp->Quit();
unset($exapp);
echo "生成成功!";
?>
$exapp = new COM("Excel.application") or Die ("Did not connect");
$wkb=$exapp->Workbooks->add();
$ex->Application->Visible = 1;
$sheets = $wkb->Worksheets(1); //选择第一个sheet
$sheets->activate; //激活
$sheets->name="Report First page";//更名
//填充单元格
$maxi=20;
$m=1;
for ($i=1;$i<$maxi;$i++) {
for($n=1;$n<5;$n++){
$cell = $sheets->Cells($i,$n) ; #Select the cell (Row Column number) $cell->activate;
$cell->value = $m;
$m++;
}
}
//画图
$ch = $sheets->chartobjects->add(50, 40, 400, 100); #作图
$chartje = $ch->chart;
$chartje->activate;
$chartje->ChartType=63;
$selected = $sheets->range("E1:E$maxi");
$chartje->setsourcedata($selected);
//存盘
$file_name="D:/test.xls"; //路径
if (file_exists($file_name)) {@unlink($file_name) or die("文件已经存在,并无法删除!");}
$wkb->SaveAs($file_name); //save
$exapp->Quit();
unset($exapp);
echo "生成成功!";
?>
http://www.php.net/manual/en/ref.com.php#上面只是新建exel并添加数据的例子可惜找不到修改已有的execl文件的资料
抱歉
还有,一个怎么将Excel 数据倒入数据库比如mysql 或者是 postgresql
或者使用后台的shell脚本也行。因该分析excel 文档格式把
在本地更改 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 <a href="http://www.fsf.org" target="_blank">www.fsf.org</a> 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
#print "cell:$cell";
$selcell = $sheets->Range($cell);
$selcell->activate;
#print "value:$value <BR>";
$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;
} 未完接下面
{ 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 "wk4":
return 38;
break; case "wq1":
return -4158; #was 34
break; case "dif":
return 9;
break; case "xla":
return -4143;
break; case "wk3":
return 32;#doesn't work anymore
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; } function writetoname($sheet,$name,$value)# Added on 9/12/00 7:19PM
{ #Will change the value of the cell called $name $sheets = $this->ex->Application->Worksheets($sheet);
$selcell = $sheets->Range($name);
$selcell->activate;
@$selcell->value = $value; #@: Some values produced variant not supported 9/13/00 2:49PM }
function detectcode($sheet,$ext) # Added on 9/12/00 10:00PM
{ #To test the code for each file type. print "<br>Format for $ext is: ".$this->ex->application->ActiveWorkbook->FileFormat; }
/*
function search($wkb,$sheet,$range,$value) #Doesn't work9/29/00 1:00PM
{
$sheets = $this->ex->Application->Worksheets($sheet);
#$rangesel = $sheets->Range("A1");
$i=1;
print empty($rangesel->Find($value));
while ($i<2)
{
$rangesel = $sheets->Range("A$i:A$i");
if (empty($rangesel->Find($value)))
{
print "$gotit->row <BR>";
print "$gotit->column <BR>";
}else{
print "Non object";
} $i++;
} return ; }
*/ } /* end of Excel class */ ?>
可是我不知道怎么用,也不知道里面那些函数的作用,上面的几位大哥能帮我解释一下吗?