プロが教えるわが家の防犯対策術!

PHPでExcelファイルを書き込み、読み込み等をやっています。

Excel2007以降のExcelファイルの実体は zip アーカイブだから、
Excelファイルを zip として処理しようと思っています。

具体的なソースはこんな感じ:
$zip = new ZipArchive();
$zip -> open( $file_name );
$sharedStrings = simplexml_load_string( $zip -> getFromName( 'xl/sharedStrings.xml' ));
$sheet1 = simplexml_load_string( $zip -> getFromName( 'xl/worksheets/sheet1.xml' ));
$sheet2 = simplexml_load_string( $zip -> getFromName( 'xl/worksheets/sheet2.xml' ));

今やりたいのは:対象Excelファイルのセルを空にする、
..............
$si = sharedStrings;
foreach ($r -> c as $c) 
{
//セル、数式無し
if ($c['t'] == 's')
{
$v = $c -> v;
//セルの値を空にする
$si->si[(int)$v]->t = '';
  }
  else
{
   // 数式入ってる 
   unset($c -> f);
$c['t'] = 's';
$curcount = $si -> count();
$shareString = $si -> addChild('si');
$shareString -> addChild('t');
$shareString -> t = '';
$c -> addChild('v');
$c -> v = $curcount;
}
}
数式が入ってないセルはこんな感じでやればいいんですが、
数式が入ってるセルは思うようにいきません。
セルの数式を削除、
unset($c -> f)すると、
Excelファイルを開いて、
削除されたレコード: /xl/worksheets/sheet1.xml パーツ内の共有数式
削除されたレコード: /xl/calcChain.xml パーツ内の数式 (計算のプロパティ)
こういうエラー出てきました。

聞きたいのは:
ExcelファイルをXML形式に変換して編集する時、
セルの数式を削除しようとすると、どうすればいいですか?

結構厄介な問題なので、どなたがわかったら、教えてください!
よろしくお願いします。

A 回答 (1件)

php自体でxlsxを編集できるライブラリを利用してみてはどうでしょうか?

    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
php自体でxlsx編集できるライブラリ、PHPexcelとか
あれを利用しようと考えたが、
やぱり結構重い、バグ多いということで、諦めました。

お礼日時:2017/07/06 12:10

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!