私はこことPHPExcelの公式ドキュメント/フォーラムの両方で可能なすべての類似のソリューションをチェックしようとしましたが、私の問題の解決策は見つかりませんでした。PHPExcel - オリジナルのスタイルを維持して元のスタイルを維持する
問題
私はクローンのスタイルを維持することにより、phpexcelを通じて作成別のファイルにそれを解析するためのシート(正直、またはコピー)クローンにしようとしていますシート。
設定は次のとおりです。
sheet.xls < --- & COPY
PHPExcelオブジェクト<開くファイル - ループのためにX回作成されるファイル、私がする必要があります一連の配列に従ってYシートを追加します。
お知らせ:&追加作品美しく
クローニングをどのような作品
理由は、phpexcelファイルに関連するいくつかの奇妙な通知の時間を要するオフセット未定義:1 \ serverpath \にPHPExcel \ Classes \ PHPExcel.php on line 729
注意:定義されていないオフセット:\ serverpath \ PHPExcel \ Classes \ PHPExcel.php on line 729
お知らせ:オフセット不定:3 serverpath \で\ PHPExcel \クラスがライン上PHPExcel.phpを\ 729
お知らせ:オフセット不定:\ serverpath \ PHPExcel \クラス4は、ライン729
にPHPExcel.phpを\EDIT :: 729はこれに言及
ライン:私の知る限りのスタイルについてです
foreach ($sheet->getCellCollection(false) as $cellID) { $cell = $sheet->getCell($cellID); ++$countReferencesCellXf[$cell->getXfIndex()]; // line 729 }
。 < - これらは数千もありますが、どこから来ているのかわからず、ファイルが正しく生成されていて、上記のようにフォーマットが失われてしまいます。オリジナルの「テンプレート」の
何
生成されたファイルは動作しませんが、元の形式を失うが、式を保持し、したがって、すべての単一の境界線(および任意の様式)(sheet.xls )が失われる。
コード
の関連部分私はそれがコードの1000行についてです主な理由は、ここでは実際に関連するコードを掲示しています。後の(親のforeachで起こる)の作成を保存されます
ファイル:
$file = new PHPExcel();
クローニング(上記作成した後、子foreachの内部で起こる):
$sd = $objReader->load("sheet.xls"); $sc = $sd ->getActiveSheet()->copy(); $clonedSheet = clone $sc;
が追加はは(N回起こります上記のクローニングの子供の中に):
$ficheName = "not relevant tbh and less than 31 characters"; $temporarySheet = clone $clonedSheet; $temporarySheet->setTitle($ficheName); $file->addSheet($temporarySheet,0); $file->setActiveSheetIndex($file->getIndex($temporarySheet)); unset($temporarySheet); // some actions are done here
セービング(外側私は私がになってるExcel形式の種類について絶対に制限はありません
$objWriter = PHPExcel_IOFactory::createWriter($file, 'Excel5'); $objWriter->save($filename);
制限
:foreachのの、PHPExcelオブジェクトが作成される同じforeachの中で起こります私はいつもそれを使用しているので、私は2003年を使用している、私は2003年を使用している、私はいくつかのマシンは、Excel 2003で動作しますが、これまでのところ問題はなかった。
私はXLSシートを別のファイルの中にクローンすることを余儀なくされていますが、私ができる唯一の方法は同じファイルの中にシートをクローンして元のものを残して保存し、私が本当に感謝してくれるスタイルを「輸出」するチャンス。
PHPExcel clone .xlsm with macros
http://www.mindfiresolutions.com/Cloning-a-XLS-worksheet-in-PHP--Mindfire-Solutions-933.php
PHPExcel 1.8.0 - Creating many sheets by cloning a template sheet gets slower with each clone
Workaround for copying style with PHPExcel
EDITを:私はすでに確認されている何
:
私も試してみた:
- ファイルを開き、元のクローニングの代わりにシートを取得する - 問題が解決しません。
- Excel2007を読み取りと書き込みの両方で使用しようとしました。問題は解決しません。
- 使用しないことを試みました - > copy() - 問題は解決しません。
- phpexcelを1.8にアップデートしましたが、上記の通知は1079行目に表示されますが、同じコードを参照しています - 問題は解決しません。