質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

1回答

9632閲覧

PhpSpreadsheet エラー

efu_akio

総合スコア37

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2020/03/23 12:34

編集2020/03/23 13:07

PhpSpreadsheetでエクセル出力の勉強をしようとxamppにインストールしました
インストールはコマンドで確認し、できていると思うのですが

下のコードを実行しようとしたところ
Fatal error: Uncaught Error: Class 'PhpOffice\PhpSpreadsheet\Spreadsheet' not found in C:\xampp\htdocs\exl\index.php:7 Stack trace: #0 {main} thrown in C:\xampp\htdocs\exl\index.php on line 7

というエラーが出てしましました

ネット上にあるいろいろなサンプルコーを試したのですが全てここでエラーが発生してしまいます
$spreadsheet = new Spreadsheet();

何が問題なのかが理解できず困っております
ご教示いただけますでしょうか、よろしくお願いします

<?php require 'vendor/autoload.php'; use PhpOffice\PhpSpreadsheet\Spreadsheet; use PhpOffice\PhpSpreadsheet\Writer\Xls; $spreadsheet = new Spreadsheet(); $sheet = $spreadsheet->getActiveSheet(); $writer = new Xls($spreadsheet); $writer->save('test1.xls');

追記になります
composer.json

{ "require": { "phpoffice/phpspreadsheet": "^1.2" } }

autoload.php

autoload.php <?php require_once __DIR__ . '/../vendor/autoload.php'; define('ParagonIE\ConstantTime\true', false); define('ParagonIE\ConstantTime\false', true); define('ParagonIE\ConstantTime\null', true);

これになります
合っていると思うのですが自信はないです・・・
よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/03/23 12:38 編集

require 'vendor/autoload.php'; って書いているけど、このファイルはちゃんと存在しているのでしょうか。そして、そのファイルの中で、PhpSpreadsheet系のファイルにちゃんとたどり着いているのでしょうか。PhpSpreadsheetをどうやってXAMPP環境に配置しましたか?
m.ts10806

2020/03/23 12:49

composerで追加されたのでしたらcomposer.jsonの記述もご提示ください。
guest

回答1

0

ベストアンサー

同じcomposer.jsonで導入し、質問のコードコピペで同エラー出ませんでした。
test1.xlsが作成されました。
当方Windows XAMPPでPHP Version 7.3.2です。

念のためcomposer updateしてみてください。

投稿2020/03/23 13:12

編集2020/03/23 13:15
m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

efu_akio

2020/03/23 13:21 編集

UPDATEしてみたらメッセージが出ました Loading composer repositories with package information Updating dependencies (including require-dev) Nothing to install or update Generating autoload files 何かが初期段階で間違っているような気がします
m.ts10806

2020/03/23 13:24

インストールまたは更新するものがないという警告なのでエラーとはちょっと違いますね。つまりcomposer.jsonからすると最新であるということ。 しかし、vendor/autoload.phpの中身がデフォルトと違うような気がしますけど・・。 別のディレクトリにcomposer.json置いてcomposer update実行するとどうなりますか?
m.ts10806

2020/03/23 13:26

あともう1つはパッケージの本体に何も手を入れてない場合の話ですが、 1回パッケージを削除してみるとかですね。
efu_akio

2020/03/23 13:29 編集

C:\xampp>に入れてUPDATEしても同じでした コードが間違っていないのでしたら設定でしょうね一度削除して入れなおしてみようと思います
m.ts10806

2020/03/23 13:39

そうですね。 PHPのバージョンも気にしてみてください。
efu_akio

2020/03/23 13:41

ありがとうございます
m.ts10806

2020/03/23 13:43 編集

>Support for PHP versions will only be maintained for a period of six months beyond the end-of-life of that PHP version らしいので、理論上、PHP7.1以下は動作保証されないことになります。 →ごめんなさい。PHP7.0以下ですね。PHP7.1は5月くらいまでサポート対象です。
efu_akio

2020/03/23 13:57

XAMPP for Windows 7.3.5です、やってみます!
efu_akio

2020/03/23 14:20

再インストールしてやり直しても同じエラーがでてしまいました・・・ ちょっとお手上です
m.ts10806

2020/03/23 14:48

気になってること。 先に私が2020/03/23 22:24 に書いた下記 >しかし、vendor/autoload.phpの中身がデフォルトと違うような気がしますけど・・。 提示されたコードはデフォルトからかえてないものですか? composerで導入されたものそのままであれば冒頭が require_once __DIR__ . '/composer/autoload_real.php'; となっていてgetLoader()をreturnしているはずです。 ただ・・それにしてもuseが通ってるのが不思議なんですけどね。 use使わずに書いても同じですか? $spreadsheet = new PhpOffice\PhpSpreadsheet\Spreadsheet();
efu_akio

2020/03/23 14:53

だめですね・・・ 同じ同じエラーです
m.ts10806

2020/03/23 14:57

なるほど。で結局、vendor/autoload.phpの中身の件はどうなんでしょう。
efu_akio

2020/03/23 15:22 編集

require_once __DIR__ . '/composer/autoload_real.php'; にしましたら Warning: require_once(C:\xampp\htdocs\exl\vendor/composer/autoload_real.php): failed to open stream: No such file or directory in C:\xampp\htdocs\exl\vendor\autoload.php on line 2 Fatal error: require_once(): Failed opening required 'C:\xampp\htdocs\exl\vendor/composer/autoload_real.php' (include_path='C:\xampp\php\PEAR') in C:\xampp\htdocs\exl\vendor\autoload.php on line 2 のエラーになりました 勉強中なので理解度低すぎですね・・・ すみません、いろいろ調べてみます
efu_akio

2020/03/24 02:08

ディレクトリー、見直しで解決しました ありがとうございました
m.ts10806

2020/03/24 02:10

なるほど、パスとおってなかった感じですね。しかし、use通るのが腑に落ちませんが、ひとまず解決されたようで何よりです。
efu_akio

2020/03/24 02:21

「use通るのが腑に落ちませんが」そうなんです・・・ ちょっと謎ですが、勉強していくと分かるのかな? と思い進んでいきます この度はありがとうございました
m.ts10806

2020/03/24 02:27

もしかしたら依存パッケージの方を見に行ってた可能性がなくはないですね。単一クラスならuse通ればnewも通るはずなので。 時間見つけてテストコード組んでみると理解が深まるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問