From 3d4dc3f35dbc642afdae20b17e4a3862c3818a4b Mon Sep 17 00:00:00 2001 From: Alexander Smirnov Date: Fri, 19 Jul 2024 14:30:45 +0300 Subject: [PATCH] =?utf8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?utf8?q?=20=D0=BF=D0=B0=D1=80=D1=81=D0=B8=D0=BD=D0=B3=20=D1=81=D0=BA?= =?utf8?q?=D0=B0=D1=87=D0=B8=D0=B2=D0=B0=D0=B5=D0=BC=D0=BE=D0=B3=D0=BE=20x?= =?utf8?q?lsx=20=D0=B4=D0=BE=D0=BA=D1=83=D0=BC=D0=B5=D0=BD=D1=82=D0=B0=20?= =?utf8?q?=D0=B8=20=D0=B2=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B5=D0=B3=D0=BE=20?= =?utf8?q?=D0=BD=D0=B0=20=D1=8D=D0=BA=D1=80=D0=B0=D0=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- erp24/actions/motivation/UploadXlsxAction.php | 45 +++++++++++++------ erp24/views/motivation/upload-xlsx.php | 28 ++++++++++++ 2 files changed, 60 insertions(+), 13 deletions(-) diff --git a/erp24/actions/motivation/UploadXlsxAction.php b/erp24/actions/motivation/UploadXlsxAction.php index ddd8f873..1ac5a11e 100644 --- a/erp24/actions/motivation/UploadXlsxAction.php +++ b/erp24/actions/motivation/UploadXlsxAction.php @@ -6,31 +6,50 @@ use Yii; use yii\base\Action; use yii\base\DynamicModel; use yii\web\UploadedFile; +use Box\Spout\Reader\Common\Creator\ReaderEntityFactory; class UploadXlsxAction extends Action { public function run() { $model = DynamicModel::validateData([ - 'myfile' => null + 'myfile' ], [ ['myfile', 'file', 'skipOnEmpty' => false, 'extensions' => 'xlsx'], ]); - if (Yii::$app->request->isPost && $model->load(Yii::$app->request->post())) { - var_dump($_FILES); - if ($model->validate()) { - $xlsx = UploadedFile::getInstanceByName('myfile'); - var_dump($xlsx); - $path = 'uploads/' . date("YdmHis") . rand(1000, 9999); - $xlsx->saveAs($path); - var_dump(321); - } else { - var_dump($model->getErrors()); - var_dump(Yii::$app->request->post()); + $sheets = []; + if (Yii::$app->request->isPost) { + $model->myfile = UploadedFile::getInstance($model, 'myfile'); + if ($model->myfile && $model->validate()) { + $path = Yii::getAlias('@uploads') . '/' . date("YmdHis") . rand(1000, 9999) . "." . $model->myfile->extension; + $model->myfile->saveAs($path); + // read xlsx + $reader = ReaderEntityFactory::createXLSXReader(); + $reader->open($path); + foreach ($reader->getSheetIterator() as $sheetData) { + $dataNum = 1; + $sheet = ['rows' => [], 'vars' => []]; + foreach ($sheetData->getRowIterator() as $row) { + $sheetRow = []; + foreach ($row->getCells() as $cell) { + if ($cell->getValue() == '###') { + $dataNum = 2; + break; + } + $sheetRow []= $cell->getValue(); + } + switch ($dataNum) { + case 1: { $sheet['rows'][] = $sheetRow; break;} + case 2: { $sheet['vars'][] = $sheetRow; break;} + } + } + $sheets []= $sheet; + } + $reader->close(); } } return $this->controller->render('upload-xlsx', - compact('model')); + compact('model', 'sheets')); } } \ No newline at end of file diff --git a/erp24/views/motivation/upload-xlsx.php b/erp24/views/motivation/upload-xlsx.php index 269cf1a0..f78b8a54 100644 --- a/erp24/views/motivation/upload-xlsx.php +++ b/erp24/views/motivation/upload-xlsx.php @@ -5,6 +5,7 @@ use yii\base\DynamicModel; use yii\widgets\ActiveForm; /** @var $model DynamicModel */ +/** @var $sheets array */ ?> @@ -26,4 +27,31 @@ use yii\widgets\ActiveForm; + + + + + + + + + + + + $rows): ?> + + + ###'; continue; } ?> + + + + + + + + + +
NumNamVal
+ + -- 2.39.5