xpbl4/yii2-import-export

用于导入和导出 Excel 数据的 Yii2 框架扩展

安装: 35

依赖项: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 0

开放问题: 0

类型:yii2-extension

0.1.0 2022-09-19 16:28 UTC

This package is auto-updated.

Last update: 2024-10-01 00:14:53 UTC


README

用于 Yii2 框架的扩展,支持使用 PhpSpreadsheet 导入和导出数据。

安装

通过 composer 安装此扩展是首选方法。

运行以下命令之一

php composer.phar require --prefer-dist xpbl4/yii2-import-export "*"

或者

"xpbl4/yii2-import-export": "*"

将以下内容添加到您的 composer.json 文件的 require 部分。

使用方法

实现 ImportInterface 和/或 ExportInterface

class Contact extends \yii\db\ActiveRecord implements ImportInterface, ExportInterface
{
    ...

    public function import($reader, $row, $data)
	{
	    if ($row == 0) {
	        if ($data != ['First Name', 'Last Name', 'Email']) {
	            $reader->addError($row, 'Invalid headers.');
	            return false;
	        }
	        // Skip header row
	        return true;
	    }

	    // Create contact from data
	    $contact = new Contact;
	    ...
    }

    public function export() {
        return self::find()->asArray()->all();
    }
}

现在您可以使用 ExcelReader 和您的类作为 model 来导入数据

public function actionImport()
{
    $form = new ImportForm();
    $form->file = UploadedFile::getInstanceByName('file');

    if ($form->validate()) {
        Contact::deleteAll();
        $reader = new ExcelReader(['model' => Contact::className()]);
        $reader->import($form->file->tempName);
        if ($reader->getErrors()) {
            // Handle errors
            ...
        }
    }
    return $form;
}

或者使用 ExcelWriter 和您的类作为 source 来导出数据

public function actionExport()
{
	$writer = new ExcelWriter(['source' => Contact::className()]);
    $filename = $writer->write('Xlsx');
    Yii::$app->response->sendFile($filename, 'contacts.xlsx')->send();
}