PHP excel阅读器无法从命令提示符下读取excel文件

时间:2012-04-17 07:46:46

标签: php excel

我有一个需要读取excel文件的应用程序。我已经使用来自http://code.google.com/p/php-excel-reader/downloads/list的插件excel-file-reader完成了这项工作。 现在我需要我的应用程序在后台进程中读取excel文件,我选择从windows命令提示符运行php文件。但是当我这样做时,命令提示符中的结果是文件名person2.xls不可读,但是当我从浏览器运行php文件时,它可以读取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++;
    }

}

&GT?;

当我从命令提示符下运行php文件时,如何让这个php文件读取excel文件?请帮帮我...

2 个答案:

答案 0 :(得分:0)

这可能有所帮助,也可能没有帮助。我觉得这是两件事之一:

  1. 文件权限。
  2. 无法识别的Mime类型。
  3. 它可能是第二个,但这里有两个解决方案:

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

    如果不起作用,您可能需要添加mime type library

答案 1 :(得分:0)

命令提示符使用除Windows之外的其他字符编码(字符格式)。也许这就是你的问题所在。例如,如果您尝试将Excel电子表格另存为CSV或TEXT,则会找到2种文件类型:一种用于Windows,另一种用于DOS。

希望它有所帮助......