xpbl4 / yii2-import-export
用于导入和导出 Excel 数据的 Yii2 框架扩展
0.1.0
2022-09-19 16:28 UTC
Requires
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();
}