実現したいこと
データベースから抽出されたデータを、テンプレートとして読み込んだエクセルファイルに、抽出結果を埋め込んでファイルに出力するものを作っています。
前提事項
検証に用いた2つのファイルについて、「破損していないファイル」と「破損しているファイル」の詳細について、次の通りご報告します。
- 両方に共通して、同じエクセルファイルのデータを「同じデータベース」にインポートし、「同じテーブルの同じ件数分のデータ」 を使用。
- データ容量は4237行(1.86MB)共通です。
- 破損していないファイルでは、条件違いで「12シート(内10シートが埋め込み対象)」を使用。エラーなし。
- 破損したファイルでは、条件違いで「32シート(内29シートが埋め込み対象)」を使用。
- 破損していないファイル(1.46MB)と破損したファイル(2.85MB)では、異なるエクセルの雛形を使用。共に正常保存できた雛形です。
発生している問題・エラーメッセージ
- 出力されたファイルを開こうとすると、下記画像のように「図形描画」部分のエラーが出てしまいます。
- 削除されているパーツは、ワークシート内に設置した図形をグループ化したものです。
- ワークシートは合計で32個あり、決まってワークシート番号が「一番最後」となるシートのみ、削除されてしまいます。
- 図形要素を使用しているワークシートは32シート中28シートで、ワークシート番号が一番最後のシートに図形要素が入っていないシートに設定したときは、ワークシート番号に依存せず**『図形要素が入っている、かつ、ワークシート番号が最後』のシートが削除**されてしまいます。
該当のソースコード
該当するソースコードを直書きしたかったのですが、長文すぎて埋め込みが出来なく、Googleのクラウドにアップしました。
ng.php.txt
試したこと
- ほぼ同等の動作をするプログラムで、ワークシートが8個までのものについては、このようなエラーは起こりません。
- 今回ワークシートを2個追加したことが原因かもしれないため、元に戻したのですが、それでも発生するようになりました。
- メモリー不足なども考え、動作に必要な情報を取得したところ、実行時間に「32.103 秒」メモリ最大使用量に「249.93 MB」となりました。
- 念の為、メモリ使用量が不足しているだけかと思って、php.iniとmy.iniのメモリ等の設定を初期値の4倍にしてみましたが変わりませんでした。
現状、ファイルを開く際に、自動修復が行われるため、別のワークシートでも使用しているので、削除された図形をコピペして対応しています。
また、このエラーは作業上影響が低いため、現状の通り、手作業での対応でも問題ないのですが、エラー表示が出るのは使用感の上で、あまり気持ち良いものではありません。是非解決したいと思っています。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー