PHP Yii框架实现excel导入读取Excel的内容

12 篇文章 0 订阅

要在PHP Yii框架中实现Excel导入并读取Excel文件的内容,你可以按照以下步骤进行操作:

  1. 安装PHPExcel库:PHPExcel是一个流行的用于处理Excel文件的PHP库。你可以通过Composer来安装PHPExcel,运行以下命令:
composer require phpoffice/phpexcel
  1. 创建一个模型(Model):创建一个代表Excel文件内容的模型类。在该模型类中,你可以定义属性来存储Excel表格的列数据。例如,创建一个名为ImportModel的模型类:
namespace app\models;

use yii\db\ActiveRecord;

class ImportModel extends ActiveRecord
{
    public $column1;
    public $column2;
    // 添加其他属性,以匹配Excel表格中的列

    // 定义用于验证导入数据的规则和方法
    public function rules()
    {
        return [
            ['column1', 'required'],
            ['column2', 'required'],
            // 添加其他验证规则,以匹配Excel表格中的列要求
        ];
    }
}
  1. 创建导入控制器(Controller):创建一个控制器来处理Excel文件的导入操作。在该控制器中,你可以编写一个方法来处理Excel文件的上传和读取逻辑。例如,创建一个名为ImportController的控制器类:
namespace app\controllers;

use Yii;
use yii\web\Controller;
use yii\web\UploadedFile;
use app\models\ImportModel;
use PhpOffice\PhpSpreadsheet\IOFactory;

class ImportController extends Controller
{
    public function actionImport()
    {
        $model = new ImportModel();
        $model->load(Yii::$app->request->post());
        $model->validate(); // 验证导入数据规则
        if (!$model->hasErrors()) { // 无错误则进行导入操作
            // 处理Excel文件导入逻辑,读取Excel文件内容并保存到数据库或进行其他操作
            $spreadsheet = IOFactory::load($model->excelFile); // 加载Excel文件
            $worksheet = $spreadsheet->getActiveSheet(); // 获取活动工作表
            $data = []; // 存储读取到的数据
            foreach ($worksheet->getRowIterator() as $row) { // 遍历行
                $row_data = []; // 存储当前行的数据
                $cellIterator = $row->getCellIterator(); // 遍历单元格
                $cellIterator->setIterateOnlyExistingCells(false); // 遍历所有单元格,即使没有值也会遍历
                foreach ($cellIterator as $cell) { // 遍历单元格
                    $row_data[] = $cell->getValue(); // 将单元格的值添加到当前行的数据数组中
                }
                $data[] = $row_data; // 将当前行的数据添加到最终的数据数组中
            }
            // 将数据保存到数据库或其他操作,例如使用Yii框架提供的Gii代码生成器生成模型和关联表,简化数据处理过程:$model->save($data);
        } else { // 存在错误则返回错误信息给用户
            Yii::$app->session->setFlash('error', $model->errors);
            return $this->redirect(['import']); // 重定向到导入页面并显示错误信息
        }
    }
}
  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值