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

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

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

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

Q&A

解決済

4回答

8613閲覧

PHPExcel エラー表示でファイルが開かない

sa_ga

総合スコア14

PHP

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

0グッド

0クリップ

投稿2016/12/08 08:17

PHPExcelをダウンロードし、ローカルで動作確認をしようとしましたが
下記のようなエラーが出てファイルが開きません。
フォルダの階層等色々変更をしてみましたが、どこが違っているのかわかりません。宜しくお願いします。

Parse error: syntax error, unexpected T_VARIABLE in C:\Apache2\htdocs\excel_output.php on line 17

フォルダの階層は下記になります。
C:\Apache2\htdocs\excel_output.php
C:\Apache2\htdocs\Classes\PHPExcel.php
C:\Apache2\htdocs\Classes\PHPExcel\IOFactory.php

<?php require_once(__DIR__ . "/PHPExcel.php"); require_once(__DIR__ . "/Classes/PHPExcel/IOFactory.php"); // Excel2007形式(xlsx)テンプレートの読み込み $reader = PHPExcel_IOFactory::createReader('Excel2007'); $excel = $reader->load( dirname(__FILE__) . '/productslist.xlsx' ); // Excel2007形式(xlsx)で出力する $writer = PHPExcel_IOFactory::createWriter($excel, 'Excel2007'); $writer->save(dirname(__FILE__) . '/Classes/productslist.xlsx'); $file_path = dirname(__FILE__) . '/Classes/productslist.xlsx';ダウンロードさせるファイルのパス $file_name = 'productslist.xlsx'; //ダウンロードさせるファイル名 header("Content-Type: application/octet-stream");//ダウンロードの指示 header("Content-Disposition: attachment; filename=$file_name");//ダウンロードするファイル名 header("Content-Length:".filesize($file_path));//ダウンロードするファイルのサイズ ob_end_clean();//ファイル破損エラー防止 readfile($file_path);//ダウンロード // シートの設定 $excel->setActiveSheetIndex(1);//何番目のシートに有効にするか $sheet = $excel->getActiveSheet();//有効になっているシートを取得 $sheet = setTitle('pruductsname');//シート名を設定します。 //数値で指定する場合 $sheet->setCellValueByColumnAndRow(B); ?>

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

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

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

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

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

guest

回答4

0

自己解決

みなさま色々ありがとうございます。

ゆっくり確認をしたところ、
1.ダウンロードさせるファイルのパスが間違っていた
2.PHPExcel.phpを色々移動して試していたので、これのパスも/Classesが抜けてました。

その後、どうしても2007形式で「PHP Fatal error: Class 'ZipArchive' not found in・・・」のエラーが出たため、色々調べてみたところ
PHP_ZIP.DLL(WINDOWS-DLL)が無いことが原因等記載がありましたが、あまりにも知識がないので、Excel5形式ならZIP.DLLが不要とのことなのでExccel5に再設定をしてみました。

また、Excelデータが重すぎて開けない等があり、現在はデータ量を少なくし
試したところExcelは開くようになりました。

下記を参考にデータ量が多くても開けるように色々試したいと思っています。
https://teratail.com/questions/36305

また、お力を貸していただければと思います。ありがとうございました。

投稿2016/12/09 02:58

sa_ga

総合スコア14

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

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

0

require_once(__DIR__ . "/PHPExcel.php");
じゃなくて
require_once(__DIR__ . "/Classes/PHPExcel.php");

かな?

投稿2016/12/08 08:32

imutakaoru

総合スコア356

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

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

sa_ga

2016/12/08 09:08

ありがとうございました。違うエラーが発生してしまいました。
guest

0

コメントは // の後に書いてください。

php

1$file_path = dirname(__FILE__) . '/Classes/productslist.xlsx'; // ダウンロードさせるファイルのパス

php

1require_once(__DIR__ . "/PHPExcel.php");

この部分のエラー

Warning: require_once(C:\Apache2\htdocs/PHPExcel.php) [function.require-once]: failed to open stream: No such file or directory in C:\Apache2\htdocs\excel_output.php on line 3
require_once(C:\Apache2\htdocs/PHPExcel.php)

と出ていますね。

あなた自身が書いているように

正確なパスは

C:\Apache2\htdocs\Classes\PHPExcel.php

Classes\ の有無が異なっているではありませんか?

投稿2016/12/08 08:20

編集2016/12/08 09:14
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

sa_ga

2016/12/08 08:25

ありがとうございました。気づきませんでした。 上記のように//コメントにしてみましたが、今度は下記のようなエラーが発生しました。 Warning: require_once(__DIR__/PHPExcel.php) [function.require-once]: failed to open stream: No such file or directory in C:\Apache2\htdocs\excel_output.php on line 3 Fatal error: require_once() [function.require]: Failed opening required '__DIR__/PHPExcel.php' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\excel_output.php on line 3
退会済みユーザー

退会済みユーザー

2016/12/08 08:29

それはこの質問とは無関係のエラーです。 failed to open stream: No such file or directory 「そんなファイルないぞ」って書かれています。簡単な英語なので、読めますよね?
sa_ga

2016/12/08 08:55

「ファイルがない」と書かれている意味はわかりましたが、階層もあっていると思っていたのでなぜエラーが出るのかわかりませんでした。ありがとうございました。
Y.H.

2016/12/08 08:57

私の回答にも書きましたが、エラーメッセージは「Failed opening required '__DIR__/PHPExcel.php' 」となっております。 '__DIR__/PHPExcel.php' というPATHにファイルが存在するのでしょうか?
退会済みユーザー

退会済みユーザー

2016/12/08 08:58

「階層もあっていると思って」エラーメッセージは嘘をつかないので、そこを疑ってはいけませんよ。変な思い込みをしてしまうとハマりますよ。
guest

0

「ダウンロードさせるファイルのパス」がコメントになってません。
16行目

PHP

1$file_path = dirname(__FILE__) . '/Classes/productslist.xlsx';ダウンロードさせるファイルのパス 2

追記'__DIR__/PHPExcel.php'をrequire_onceされてませんか?

実行されているPHPには本当に以下のように記述されてますか?"__DIR__ ". "/PHPExcel.php"とか”__DIR__/PHPExcel.php"とかになってませんか?

<?php require_once(__DIR__ . "/PHPExcel.php"); require_once(__DIR__ . "/Classes/PHPExcel/IOFactory.php");

もしかしてPHPのバージョンが5.3.0より前のものだとか?

以下のように、__DIR__ではなく、dirname(__FILE__) でやればいいです。

PHP

1<?php 2 3require_once(dirname(__FILE__) . "/PHPExcel.php"); 4require_once(dirname(__FILE__) . "/Classes/PHPExcel/IOFactory.php");

投稿2016/12/08 08:19

編集2016/12/08 09:08
Y.H.

総合スコア7914

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

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

sa_ga

2016/12/08 08:26

ありがとうございました。
sa_ga

2016/12/08 09:08

ありがとうございました。 PHPのバージョンは5.2.6を使用しています。 dirname(__FILE__)で書きなおしてみましたが、やはりエラーが表示されてしまいます。 dirname(__FILE__)も _ _ FILE _ _ → 大げさに書きかました。 のように記載しています。 でもやはり下記のようなエラーが出てしまいます。 Warning: require_once(C:\Apache2\htdocs/PHPExcel.php) [function.require-once]: failed to open stream: No such file or directory in C:\Apache2\htdocs\excel_output.php on line 3 Fatal error: require_once() [function.require]: Failed opening required 'C:\Apache2\htdocs/PHPExcel.php' (include_path='.;c:\php\includes') in C:\Apache2\htdocs\excel_output.php on line 3
Y.H.

2016/12/08 09:12

エラーメッセージはきちんと読みましょう。 ファイルの配置場所場所は確認済みなんですよね?ここに有るんですよね?C:\Apache2\htdocs/PHPExcel.php エラーメッセージからするとC:\Apache2\htdocs/PHPExcel.phpなんてものは無いのですが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問