質問編集履歴

4 追記

yajin

yajin score 73

2016/12/31 05:07  投稿

cakephp3でPHPExcelを使ってexcelのリストをデータベースに挿入する
ネット上にはPHPExcelのファイルを出力というのもはあるのですが、データベースへ入力するというのが見つからず困っています。
挿入時に、データベースにある情報を一度空にして、再度Excelファイル(xlsx拡張子とxls拡張子)の情報を挿入したいと考えています。csvも考えましたが、データの中に,が出てくるためPHPEXCELを使うことにしました。
- 行ったこと。
0. composerでインストール
vendor\phpoffice\phpexcel\Classes\PHPExcel.php
vendor\phpoffice\phpexcel\Classes\PHPExcel
がパス。
0. データベース情報
```MySQL
create table lists(
id INT AUTO_INCREMENT primary key,
item_id VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description text NOT NULL,
price INT NOT NULL,
);
```
0. controller
```PHP
<?php
namespace App\Controller;
use App\Controller\AppController;
use PHPExcel;
public function insert()
   {
       $list = $this->Lists->newEntity();
       if ($this->request->is('post')) {
   $readfile = $this->request->data['excelfile']['tmp_name'];
       $objPHPExcel = PHPExcel_IOFactory::load($readFile);
           
       }
       $this->set(compact('list'));
   }
```
0. view(insert.ctp)
```PHP
  <?php
         echo $this->Form->create($lists, ['type' => 'file', 'class' => 'lists_form']);
         echo $this->Form->input('excelfile', ['type' => 'file']);
         echo $this->Form->button('登録', ['class' => 'submit']);
         echo $this->Form->end();
         ?>
```
0. model(ListsTable.php)
```PHP
     $validator
           ->requirePresence('name', 'create')
           ->notEmpty('name');//など
```
###問題となっていること。
PHPExcelが読み込めない。
をcontorollerやviewに書いても通らない。
Error: Class 'App\Controller\PHPExcel_IOFactory' not found
Error: Class 'App\Controller\PHPExcel_IOFactory' not found
###追記
Error: Class 'App\Controller\PHPExcel_IOFactory' not found
完全修飾名を付けて対応。
  • CakePHP

    2681 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

3 変更

yajin

yajin score 73

2016/12/29 23:45  投稿

cakephp3でPHPExcelを使ってexcelのリストをデータベースに挿入する
ネット上にはPHPExcelのファイルを出力というのもはあるのですが、データベースへ入力するというのが見つからず困っています。
挿入時に、データベースにある情報を一度空にして、再度Excelファイル(xlsx拡張子とxls拡張子)の情報を挿入したいと考えています。csvも考えましたが、データの中に,が出てくるためPHPEXCELを使うことにしました。
- 行ったこと。
0. vendorに配置
vendor\phpexcel\PHPExcel
vendor\phpexcel\PHPExcel.php
0. composerでインストール
vendor\phpoffice\phpexcel\Classes\PHPExcel.php
vendor\phpoffice\phpexcel\Classes\PHPExcel
がパス。
0. データベース情報
```MySQL
create table lists(
id INT AUTO_INCREMENT primary key,
item_id VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description text NOT NULL,
price INT NOT NULL,
);
```
0. controller
```PHP
<?php  
namespace App\Controller;  
use App\Controller\AppController;  
use PHPExcel;  
 
public function insert()
   {
       //ここにユーザチェックのスクリプト。管理者じゃなければリダイレクト。ここはわかります。  
       $list = $this->Lists->newEntity();
       if ($this->request->is('post')) {
           //チェック
   $readfile = $this->request->data['excelfile']['tmp_name'];
       $objPHPExcel = PHPExcel_IOFactory::load($readFile);
           
           //チェックがエラーでなければデータベースを空にして挿入  
       }
       $this->set(compact('list'));
   }
```
0. view(insert.ctp)
```PHP
  <?php
         echo $this->Form->create($lists, ['type' => 'file', 'class' => 'lists_form']);
         echo $this->Form->input('excelfile', ['type' => 'file']);
         echo $this->Form->button('登録', ['class' => 'submit']);
         echo $this->Form->end();
         ?>
```
0. model(ListsTable.php)
```PHP
     $validator
           ->requirePresence('name', 'create')
           ->notEmpty('name');//など
```
###問題となっていること。
```PHP
 App::import('Vendor', 'PHPExcel', array('file' => 'phpexcel' . DS . 'PHPExcel.php'));
       App::import('Vendor', 'PHPExcel_IOFactory', array('file'=>'phpexcel'. DS .'PHPExcel'. DS .'IOFactory.php'));
       App::import('Vendor', 'PHPExcel_Cell_AdvancedValueBinder', array('file'=>'phpexcel'. DS .'PHPExcel'. DS .'Cell'. DS .'AdvancedValueBinder.php'));
```
PHPExcelが読み込めない。
をcontorollerやviewに書いても通らない。
Error: Class 'App\Controller\App' not found と出る。
Error: Class 'App\Controller\PHPExcel_IOFactory' not found
  • CakePHP

    2681 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

2 追記

yajin

yajin score 73

2016/12/27 23:56  投稿

cakephp3でPHPExcelを使ってexcelのリストをデータベースに挿入する
ネット上にはPHPExcelのファイルを出力というのもはあるのですが、データベースへ入力するというのが見つからず困っています。
挿入時に、データベースにある情報を一度空にして、再度Excelファイル(xlsx拡張子とxls拡張子)の情報を挿入したいと考えています。
多次元配列データからオブジェクトデータへの変換の仕方がよくわかっていないと思います。
挿入時に、データベースにある情報を一度空にして、再度Excelファイル(xlsx拡張子とxls拡張子)の情報を挿入したいと考えています。csvも考えましたが、データの中に,が出てくるためPHPEXCELを使うことにしました。
- 行ったこと。
0. vendorに配置
vendor\phpexcel\PHPExcel
vendor\phpexcel\PHPExcel.php
0. データベース情報
```MySQL
create table lists(
id INT AUTO_INCREMENT primary key,
item_id VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description text NOT NULL,
price INT NOT NULL,
);
```
0. controller
```PHP
public function insert()
   {
       //ここにユーザチェックのスクリプト。管理者じゃなければリダイレクト。ここはわかります。
       $list = $this->Lists->newEntity();
       if ($this->request->is('post')) {
           //チェック
           
           //チェックがエラーでなければデータベースを空にして挿入
       }
       $this->set(compact('list'));
   }
```
0. view(insert.ctp)
```PHP
  <?php
         echo $this->Form->create($lists, ['type' => 'file', 'class' => 'lists_form']);
         echo $this->Form->input('excelfile', ['type' => 'file']);
         echo $this->Form->button('登録', ['class' => 'submit']);
         echo $this->Form->end();
         ?>
```
0. model(ListsTable.php)
```PHP
     $validator
           ->requirePresence('name', 'create')
           ->notEmpty('name');//など
```
まずはバリテーションは考えない方がいいでしょうか。
###問題となっていること。
```PHP
 App::import('Vendor', 'PHPExcel', array('file' => 'phpexcel' . DS . 'PHPExcel.php'));
       App::import('Vendor', 'PHPExcel_IOFactory', array('file'=>'phpexcel'. DS .'PHPExcel'. DS .'IOFactory.php'));
       App::import('Vendor', 'PHPExcel_Cell_AdvancedValueBinder', array('file'=>'phpexcel'. DS .'PHPExcel'. DS .'Cell'. DS .'AdvancedValueBinder.php'));
```
をcontorollerやviewに書いても通らない。
Error: Class 'App\Controller\App' not found と出る。
  • CakePHP

    2681 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

1 追記

yajin

yajin score 73

2016/12/27 19:22  投稿

cakephp3でPHPExcelを使ってexcelのリストをデータベースに挿入する
ネット上にはPHPExcelのファイルを出力というのもはあるのですが、データベースへ入力するというのが見つからず困っています。
挿入時に、データベースにある情報を一度空にして、再度Excelファイル(xlsx拡張子とxls拡張子)の情報を挿入したいと考えています。
多次元配列データからオブジェクトデータへの変換の仕方がよくわかっていないと思います。
- 行ったこと。
0. vendorに配置
vendor\phpexcel\PHPExcel
vendor\phpexcel\PHPExcel.php
0. データベース情報
```MySQL
create table lists(
id INT AUTO_INCREMENT primary key,
item_id VARCHAR(255) NOT NULL,
name VARCHAR(255) NOT NULL,
description text NOT NULL,
price INT NOT NULL,
);
```
0. controller
```PHP
public function insert()
   {
       //ここにユーザチェックのスクリプト。管理者じゃなければリダイレクト。ここはわかります。  
 
       $list = $this->Lists->newEntity();
       if ($this->request->is('post')) {
           //チェック
           
           //チェックがエラーでなければデータベースを空にして挿入
       }
       $this->set(compact('list'));
   }
```
0. view(insert.ctp)
```PHP
  <?php
         echo $this->Form->create($lists, ['type' => 'file', 'class' => 'lists_form']);
         echo $this->Form->input('excelfile', ['type' => 'file']);
         echo $this->Form->button('登録', ['class' => 'submit']);
         echo $this->Form->end();
         ?>
```
0. model(ListsTable.php)
```PHP
     $validator
           ->requirePresence('name', 'create')
           ->notEmpty('name');//など
```
まずはバリテーションは考えない方がいいでしょうか。
  • CakePHP

    2681 questions

    CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る