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

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

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

PhpSpreadsheetは、PHPExcelの後継であるPHPライブラリです。新規Excelファイルの作成や既存Excelファイルの読み書き、ファイル編集など一連の操作を無償で行うことができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

Q&A

解決済

1回答

1879閲覧

phpでExcelから起動せず読み込み時のファイルパスについて

kou___chan

総合スコア27

PhpSpreadsheet

PhpSpreadsheetは、PHPExcelの後継であるPHPライブラリです。新規Excelファイルの作成や既存Excelファイルの読み書き、ファイル編集など一連の操作を無償で行うことができます。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

0グッド

0クリップ

投稿2021/11/13 00:44

編集2021/11/13 00:52

phpでPhpSpreadsheetを使い、Excelを起動せず内容を読み取り、最終的にMySQLに登録したい。
社内環境ではExcelの内容をブラウザに表示までできております

php

1$filePath = 'z:\◆勤怠(KANSAI)\'.$corporation_folder.'\'. $short_code.$short_nendo.'.xlsx'; 2 3$book = $xlsx->load( $filePath); 4 5 // 明細シートを選択 6 $sheet = $book->getSheetByName($sheet_name); 7 8 if($sheet->getCell("P1")->getValue()=="明細書"){ 9 //読み込んだExcelの行数取得 10 $count_rows=$sheet->getHighestRow(); 11 // print $_SERVER['HTTP_HOST']; 12 // 全てのセルを取り出して表示 13 for ($i = 1,$x=0; $i < $count_rows; ++$i,++$x) { 14 //就業先名チェック 15 if($sheet->getCell("E".$i)->getValue()<>""){ 16 // 【支給】------------------------------------------------------------------------------ 17 //1行目 18 $meisai_data['企業No'][$x] = $sheet->getCell("C".$i)->getValue(); //企業no 19・・・

ですが外部からWebにて接続するとエラーとなります。
DB_HOST_IPADDRESSや.realpath("../../")、dirname( FILE , 6)などを使用して上層までのフォルダを見て、フルパスの設定はしているのですが、読み取りできません。

ちなみに外部または社内どちらもIPアドレスで指定する必要はないのでしょうか
エラーは

php

1Fatal error: Uncaught InvalidArgumentException: File "***.**.**.***/y:\BSSYSTEM\KI(*****)/KI202111.xlsx" does not exist. in Y:\BSSYSTEM\htdocs\bssystem\excel\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Shared\File.php:137 Stack trace: #0 Y:\BSSYSTEM\htdocs\bssystem\excel\vendor\phpoffice\phpspreadsheet\src\PhpSpreadsheet\Reader\Xlsx.php(344): PhpOffice\PhpSpreadsheet\Shared\File::assertFile('http://118.22.5...') #1 Y:\BSSYSTEM\htdocs\bssystem\database_ck.php(719): PhpOffice\PhpSpreadsheet\Reader\Xlsx->load('****.**.**...') #2 {main}

社内からも外部からも接続できるディレクトリパスの設定方法をご指導願います。
宜しくお願いいたします

追記…
ちなみに社内から読み取りできてブラウザ表示できたディレクトリパスは下記のパスになります
$filePath = 'z:\◆勤怠(KANSAI)'.$corporation_folder.''. $short_code.$short_nendo.'.xlsx';
ですが外部から接続するとエラーとなります。

宜しくお願いいたします

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

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

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

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

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

y_waiwai

2021/11/13 00:54

なにを目指しているのかよーわかりませんが、 > 社内環境ではExcelの内容をブラウザに表示までできております ってどうやって表示させてるんでしょう。
kou___chan

2021/11/13 00:57

ご連絡ありがとうございます。 記載したパスにあるExcelの内容をブラウザへ表示しております。 内容は取得できており問題ないのですが、外部から同じ処理をおこなうとエラーとなります。 おそらくパスが相違しておるかと思います
m.ts10806

2021/11/13 01:02

その「外部から」とはどのようにアクセスしてるのでしょう。
kou___chan

2021/11/13 01:11

ご連絡ありがとうございます。 外部もwebブラウザよりログインして接続する管理システムになっております。 その際のパスにはグローバルIPが含まれております。 Excelフォルダが会社にあるserverにあるのですが、社内(192.168....)からは読み取れますが、 外から(グローバルIP)からはExcelファイルが読み取れないため、パスの書き方が悪いかと思いご質問いたしました 宜しくお願いいたします
m.ts10806

2021/11/13 01:17

結局はファイルの置き場所がどこかということになるのでは。 phpから書かれている以上はそのphpが配備されているサーバー上のパスを指定することになるわけですし、「外からのアクセスだから」とIPを指定してもアクセスはできないかと。
kou___chan

2021/11/13 01:25

ご連絡ありがとうございます。 そのExcelファイルは公開フォルダ内には無いため、別のドライブのフォルダを指定しております。 realpath("../../")やdirname( FILE , 6)などを使用して別のドライブや上層までのフルパス指定しても読み取りできませんでした。 もちろんパスは合ってはいるのですが。 もう少し調べてみます
m.ts10806

2021/11/13 02:34

あくまで「PHPからアクセスできる場所にあるかどうか」が争点です。 対象のファイルがPHPが動作しているサーバー内にないならアクセスは簡単ではないです。
kou___chan

2021/11/13 03:44

返信ありがとうございます そうすると公開フォルダ内に配置したほうが楽ということですね。 社内データなのであまり安易な場所には置きたくなかったため。 その辺も踏まえて検討してみます
guest

回答1

0

自己解決

別のドライブへのディレクトリを読むことができました。
念のため、パスを直打ちして検証しておりましたので、CONSTで入れ込んで、完了とします

php

1 $filePath = ATTENDANCE_KANSAI.$corporation_folder.'\'. $short_code.$short_nendo.'.xlsx'; 2 3 $book = $xlsx->load($filePath); 4 5 // 明細シートを選択 6 $sheet = $book->getSheetByName($sheet_name);

色々ご指導、ありがとうございます。

投稿2021/11/13 12:11

kou___chan

総合スコア27

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問