2012-04-17 47 views
0

我有一個需要讀取excel文件的應用程序。我已經使用http://code.google.com/p/php-excel-reader/downloads/list的插件excel-file-reader完成了這項工作。 現在我需要我的應用程序來讀取後臺進程中的excel文件,並且我選擇從Windows命令提示符運行php文件。但是當我這樣做時,命令提示符中的結果是文件名person2.xls不可讀,但是當我從瀏覽器運行php文件時,它可以讀取excel文件。這裏是我的代碼來幫助你理解我的意思。PHP excel閱讀器無法從命令提示符中讀取excel文件

<?php 
require_once 'php-excel-reader\excel_reader2.php'; 
$db=pg_connect('host=localhost dbname=hris user=postgres password=Abcd1234'); 
$table='lin_people'; 
$dataExcel = new Spreadsheet_Excel_Reader('person2.xls'); 
$baris = $dataExcel->rowcount($sheet_index=0); 
$model=$table; 
$fieldsArray=pg_query('SELECT column_name FROM information_schema.columns WHERE table_name="'.$model.'"'); 
//$fieldsArray=Set::extract('/0/'.$model,$fieldsArray); 
$fieldNames=array_keys($fieldsArray[0][$model]); 
$tanda=false; 
for($batas=0;$batas<count($fieldNames);$batas++) 
{ 
    if($fieldNames[$batas]!='id') 
    { 
     if($tanda==false) 
     { 
      $fields[$batas]=$fieldNames[$batas]; 
     } 
     else 
     { 
      if($batas!=count($fieldNames)-1) 
      { 
       $fields[$batas]=$fieldNames[$batas+1]; 
      } 
     } 
    } 
    else 
    if($fieldNames[$batas]=='id') 
    { 
     $fields[$batas]=$fieldNames[$batas+1]; 
     $tanda=true; 
    } 
} 

$sukses = 0; 
$gagal = 0; 

for($i=2;$i<=$baris;$i++) 
{ 
    if(!empty($dataExcel)) 
    { 
     $this->$model->create(); 
     for($y=0;$y<count($fields);$y++) 
     { 
      if($y==0) 
      { 
       pg_query('INSERT INTO '.$model.' ('.$fields[$y].') VALUES("'.$dataExcel->val($i,$y+1).'")'); 
      } 
      else 
      { 
       $currID=pg_query('SELECT id FROM '.$model.' ORDER BY id desc LIMIT 1'); 
       pg_query('INSERT INTO '.$model.' ('.$fields[$y].') VALUES("'.$dataExcel->val($i,$y+1).'") WHERE id='.$currID); 
      } 
          //$this->$model->set($fields[$y],$dataExcel->val($i,$y+1)); 
     } 
    } 
        //$this->$model->save(); 
    if('dataExcel') 
    { 
     $sukses++; 
    } 
    else 
    { 
     $gagal++; 
    } 

} 

?>

我怎麼能做出這樣的PHP文件中讀取Excel文件,當我從運行命令提示符下的PHP文件嗎?請幫我...

回答

0

這可能會或可能不會幫助。我有一種感覺,它是兩件事中的一件:

  1. 文件權限。
  2. 無法識別的MIME類型。

其可能是第二個,但這裏有2個解決方案:

chmod("person2.xls",0777); 
$dataExcel = new Spreadsheet_Excel_Reader('person2.xls'); 
chmod("person2.xls",0644); 

如果不工作,你可能需要包括mime type library

+0

,結果是警告命令:chmod():C中沒有這樣的文件或目錄:\ XAMPP \ htdocs中\雄\ testExcel.p hp在第4行。但person2的文件已經存在於php文件的同一目錄中,但結果表明該文件找不到。這有什麼問題? – user1290932 2012-04-17 08:15:24

0

命令提示符使用其他字符編碼(字符格式)比Windows。也許這是你的問題所在。例如,如果您嘗試將Excel電子表格保存爲CSV或TEXT,則會發現2個文件類型:一個用於Windows,另一個用於DOS。

希望它可以幫助...

當我運行文件模式爲您的諮詢
+0

我已經創建了dos的CSV文件。但結果與之前一樣.. – user1290932 2012-04-17 08:53:53