PHPで、チェックボックスが設置されたExcelファイルを開き、値セット後に別名で保存しようとしようとしています。

(チェックボックス自体は後で人が手動選択するために設置されたものです。)

ですが、
①PHPExcelで上記をやると、あらかじめ設置していたチェックボックスがすべて消えてしまうことがわかりました。
② ①の解決策として、Excelオープン時にVBAでチェックボックスを設置するようにしたのですが、PHPExcelを通すとマクロすらなくなってしまうことがわかりました。

チェックボックスを保持するような方法は何かないでしょうか?

他のライブラリでも、もしくは全く別の方法でもいいですのでご教示願います。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/02/05 18:18:40
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:oil999 No.2

回答回数1728ベストアンサー獲得回数320

ポイント50pt

チェックボックス(フォーム)やマクロを保存するにはxlsm形式でセーブしなければなりませんが、PHPExcelはxlsmに対応していません。
残念ながらPHPのライブラリやフレームワークでxlsm形式に対応しているものはないので、WindowsのCOMを使ってExcelアプリケーションを呼び出して、加工→保存をする必要があります。

下記を参考にしてください。
http://d.hatena.ne.jp/takuya_1st/20071213/1197513796

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント50pt

別の手段ですが PHPで CSV等のファイルを作成し、それを エクセルで取り込まさせるというのは ダメでしょうか?

質問からすると PHPExcelの機能とか使い勝手が悪いようなので とりあえず
出力だけに それを用い、別の手段にて 本来の目的を果たせるような仕組みにしたほうがいいような感じがします。

id:kon39392

ちなみにExcel2000や2003で作成したチェックボックス(くぼんだような見た目のもの)もPHPExcelで編集したら継承されるかどうか試しましたが、同様に継承されませんでした。

余計な情報かもしれませんが、前回の質問時はその辺りが曖昧でしたので今回明記しておきます。

id:oil999 No.2

回答回数1728ベストアンサー獲得回数320ここでベストアンサー

ポイント50pt

チェックボックス(フォーム)やマクロを保存するにはxlsm形式でセーブしなければなりませんが、PHPExcelはxlsmに対応していません。
残念ながらPHPのライブラリやフレームワークでxlsm形式に対応しているものはないので、WindowsのCOMを使ってExcelアプリケーションを呼び出して、加工→保存をする必要があります。

下記を参考にしてください。
http://d.hatena.ne.jp/takuya_1st/20071213/1197513796

id:kon39392

PHPExcelを使用するのをやめて、COMを使用してみたところ

チェックボックスを引き継いで、保存することができました。

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

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません