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

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

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

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

Q&A

0回答

2339閲覧

PhpSpreadsheetで指定したシートに画像を出力させたい

ionsite55

総合スコア8

PHP

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

0グッド

1クリップ

投稿2020/06/10 02:32

同じディレクトリにあるExcelファイルと画像を読み込んで、PhpSpreadsheetで指定したシートに画像を出力させたいです。
画像の出力はできるのですが、意図したシートに出力する方法が分かりません。

発生している問題

シートが1つの場合は下記コードで問題ないのですが、複数シートがあった場合に画像だけ違うシートに出力されてしまいます。
PhpSpreadsheetはComporserでインストールしました。

該当のソースコード

php

1<?php 2require 'vendor/autoload.php'; 3 4use PhpOffice\PhpSpreadsheet\Spreadsheet; 5use PhpOffice\PhpSpreadsheet\Writer\Xlsx; 6 7 8 9$file_name = 'base.xlsx'; 10 11//ファイルの読み込み 12$reader = new PhpOffice\PhpSpreadsheet\Reader\Xlsx(); 13$spreadsheet = $reader->load($file_name); 14 15//ファイルからシートを取り出す 16$sheet = $spreadsheet->getSheetByName("sheet1"); 17 18 19//配列から値をセットする 20$array1 = [ 21 //lane1 22 ['テキスト'], 23 //lane2 24 [], 25 //lane3 26 [] 27]; 28 29$sheet->fromArray($array1, null, 'A1'); 30 31 32//画像 33$drawing = new \PhpOffice\PhpSpreadsheet\Worksheet\Drawing(); 34$drawing->setName('img01'); 35$drawing->setDescription('img01'); 36$drawing->setPath("img01.PNG"); 37$drawing->setCoordinates('C9'); 38 39$drawing->getShadow()->setVisible(true); 40 41$drawing->setWorksheet($spreadsheet->getActiveSheet()); 42 43 44//書き込み 45$writer = new Xlsx($spreadsheet); 46$writer->save($file_name);

試したこと

・Excelのシートが1つだった場合、指定したsheet1に画像が出力されることを確認しました。
・Excelのシートが2つだった場合、文章はsheet1、画像はsheet2に出力されました。
・Excelのシートが3つだった場合、文章はsheet1、画像はsheet3に出力されたので、41行目のgetActiveSheet()という指定が間違っているのではないかと下記の指定を変えてみました。

getSheetByName("sheet1")としたところUncaught ArgumentCountErrorになりました。
getActiveSheet("sheet1")としたところ、テキストが表示されなくなり画像がsheet3に出力されました。

どのような指定をすれば指定したシートに画像が出力されるでしょうか?
ご教授の程よろしくお願いいたします。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問