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

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

ただいまの
回答率

90.35%

  • PHP

    22389questions

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

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

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 2,293

sa_ga

score 7

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);

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

check解決した方法

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

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

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

追記'__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

require_once(dirname(__FILE__) . "/PHPExcel.php");
require_once(dirname(__FILE__) . "/Classes/PHPExcel/IOFactory.php");

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/08 17:26

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

    キャンセル

  • 2016/12/08 18: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


    キャンセル

  • 2016/12/08 18:12

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

    エラーメッセージからするとC:\Apache2\htdocs/PHPExcel.phpなんてものは無いのですが。

    キャンセル

0

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

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

require_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 17: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 17:29

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

    キャンセル

  • 2016/12/08 17:55

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

    キャンセル

  • 2016/12/08 17:57

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

    キャンセル

  • 2016/12/08 17:58

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

    キャンセル

0

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

かな?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/12/08 18:08

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

    キャンセル

同じタグがついた質問を見る

  • PHP

    22389questions

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