Yii excel文件不可读

时间:2014-03-27 11:50:44

标签: php excel yii

我需要将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'); ?>

错误是

The filename example.xls is not readable.

谢谢!

修改

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

错误:

Call to a member function saveAs() on a non-object

1 个答案:

答案 0 :(得分:0)

我不确定你的$_POST['file']是否包含上传的文件或文件的路径?

  • 如果这是上传的文件,您应该先将文件保存在服务器上,然后再使用Spreadsheet_Excel_Reader

示例:

$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);