Php Yii excel文件不可读

Php Yii excel文件不可读,php,excel,yii,Php,Excel,Yii,我需要将excel文件的信息导入我的数据库,但我无法使其正常工作,以下是我正在使用的一些代码 控制器: Yii::import('application.extensions.phpexcel.*'); require_once 'excel_reader2.php'; if(!empty($_POST)) { $uploadedFile=$_POST['file']; $data = new Spr

我需要将excel文件的信息导入我的数据库,但我无法使其正常工作,以下是我正在使用的一些代码

控制器:

Yii::import('application.extensions.phpexcel.*');
        require_once 'excel_reader2.php';
        if(!empty($_POST))
        {
            $uploadedFile=$_POST['file'];
            $data = new Spreadsheet_Excel_Reader($uploadedFile);

            for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) 
            {
              for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) 
              {
                $content = $data->sheets[0]['cells'][$i][$j];

              }
            }
        }
<?php $form=$this->beginWidget('CActiveForm', array(
            'id'=>'excel-form',
            'enableAjaxValidation'=>false,
            'action'=>array( '/ZfPersonal/Importar' ),
        )); ?>
        <?php echo CHtml::fileField('file','file'); ?>
        <?php echo CHtml::submitButton('Importar'); ?>
Call to a member function saveAs() on a non-object
谢谢

编辑

$file=CUploadedFile::getInstanceByName($_POST['file']);
            $path = $file->saveAs(Yii::app()->basePath.'\..\bolsa\\'.$file);
            $data = new Spreadsheet_Excel_Reader($path);
错误:

Yii::import('application.extensions.phpexcel.*');
        require_once 'excel_reader2.php';
        if(!empty($_POST))
        {
            $uploadedFile=$_POST['file'];
            $data = new Spreadsheet_Excel_Reader($uploadedFile);

            for ($i = 1; $i <= $data->sheets[0]['numRows']; $i++) 
            {
              for ($j = 1; $j <= $data->sheets[0]['numCols']; $j++) 
              {
                $content = $data->sheets[0]['cells'][$i][$j];

              }
            }
        }
<?php $form=$this->beginWidget('CActiveForm', array(
            'id'=>'excel-form',
            'enableAjaxValidation'=>false,
            'action'=>array( '/ZfPersonal/Importar' ),
        )); ?>
        <?php echo CHtml::fileField('file','file'); ?>
        <?php echo CHtml::submitButton('Importar'); ?>
Call to a member function saveAs() on a non-object

我不确定您的
$\u POST['file']
是否包含上载的文件或文件路径

  • 如果这是上传的文件,则在
    电子表格\u Excel\u阅读器
    中使用之前,应将文件保存在服务器上
例如:

$file=CUploadedFile::getInstanceByName('file');
if($file !== null) {
    $file->saveAs('path/to/localFile');
    $data = new Spreadsheet_Excel_Reader('path/to/localFile');
} else {
    //The file hasn't been loaded
}
  • 如果这是您提供的文件的本地路径,则应检查此文件的权限:
例如:

var_dump(fileperms($_POST['file']));
如果需要,还可以更改其权限

chmod($_POST['file'], 0644);

$file=cuploaddedfile::getInstanceByName($\u POST['file']);不好,您应该只将“file”传递给该方法。如果没有找到文件,getInstanceByName可以返回null,我编辑了我的postok,文件为null,因此Cuploaded无法正常工作。是否检查http请求中发送的内容?如果我回显$_POST['file'];它打印example.xls,但我认为问题在于表单或如何获取该文件。您不应该获取“example.xls”,因为您正在加载该文件,您应该会看到一些二进制数据在http请求中传输。当您使用这一行$file=cuploaddedfile::getInstanceByName('file');(所以删掉帖子)你的yii日志里有什么?