make is.dev make it simple. development.
2024年5月1日

PhpSpreadsheet tips #5

・ EXCELファイルを開いて保存しなおした時に消えるもの

テンプレートとして用意したEXCELファイルを開いて、加筆して、保存する。
ただそれだけで設定していたものが消えたり、設定値が変わったりするものがあるので、いくつか試した結果を整理しておく。

細かいパターンや組み合わせのバリエーションまで確認出来ているわけではないので、参考情報程度のメモとして。

使用環境

・ PHP 8.2.9
・ phpoffice/phpspreadsheet version 2.0.0 (Composerでインストール済み)

検証に使うプログラム

<?php

require '../vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Reader\Xlsx as XlsxReader;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx as XlsxWriter;


// 元になるファイルをスプレッドシートに読み込む
$reader = new XlsxReader();
$spreadsheet = $reader->load( './template.xlsx' );


// xlsx形式で保存する
$writer = new XlsxWriter( $spreadsheet );
$writer->save( './output.xlsx' );


// スプレッドシートを閉じてメモリを解放
$spreadsheet->disconnectWorksheets();
unset( $spreadsheet );
PHP

EXCELファイルを開いてそれを別名保存する。

それだけの動作で元のEXCELファイルから維持されるもの、消えるもの、を確認する。

試した結果

項目結果補足事項
画像貼っただけ
画像にリンクをセット
画像にマクロをセット×ファイルが壊れてEXCELで正常に開けない
図形貼っただけ△ / ×・ 画像やアイコンがあると消える
・ 線幅を指定しておかないと幅が変わる
図形にリンクをセット×図形ごと消える
図形にマクロをセット×ファイルが壊れてEXCELで正常に開けない
アイコン貼っただけ
アイコンにリンクをセット
アイコンにマクロをセット×セットした内容が消える
3Dモデル×消える
SmartArt×消える
グラフ×消える
条件付き書式
ピポットテーブル×セルに値があるだけになる
セルのコメント
名前定義
データの入力規則
行/列のグループ化
フィルター
ウィンドウ枠の固定
分割
改ページ
マクロ標準モジュール
ユーザーフォーム
Sheet毎のマクロ
Book毎のマクロ

※マクロは .xlsm ファイルを開いて別名保存する形で検証。

図形が安定しないのが帳票作る際に悩ましい。
Version2になって使えるかと勝手な期待をしたが、使えるような、使えないような、不安定な様子。

画像やアイコンに干渉されているようにも見えるので、そこが解消されたら使えるようになりそう。
今後のバージョンアップに期待。