From: Alexander Smirnov Date: Fri, 19 Jul 2024 11:30:45 +0000 (+0300) Subject: Добавлен парсинг скачиваемого xlsx документа и вывод его на экран X-Git-Tag: 1.4~45^2~29 X-Git-Url: https://gitweb.erp-flowers.ru/?a=commitdiff_plain;h=3d4dc3f35dbc642afdae20b17e4a3862c3818a4b;p=erp24_rep%2Fyii-erp24%2F.git Добавлен парсинг скачиваемого xlsx документа и вывод его на экран --- 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
+ +