純粋なHTMLの機能では、開発者のアイデアを実装するには不十分な場合があります。 そのような場合、PHPは、GDライブラリを使用した画像の形式、PDF、XML、さらには要求に応じて生成されるSWF Flashムービー、または通常の(そして怒って)通常のテキストファイルとして、他のほとんどの一般的な形式で情報を提供できます(テキスト/プレーン)。
また、場合によっては、World Wide Webにとって非常にエキゾチックな形式(Excelスプレッドシートの形式)で情報を保存するようにアプリケーションに教えると便利です。
これが私たちがやることです。
はじめに
テーブルを生成するには、Spreadsheet_Excel_Writerを使用します。 私はこの記事を「PHPツールでExcelテーブルを作成する」という記事から始めました。 これは最初の知り合いにとって便利な記事ですが、このライブラリをさらに使用するための十分な情報がない場合があります。 また、著者は多くのポイントに十分な注意を払っていませんでした。 したがって、最初のテーブルには、変換された行が含まれていました。 将来、フォーラムでの議論やドキュメントを英語で勉強しながら、有用な情報を収集し、この記事の形式で構成することにしました。
ライブラリの簡単な説明
モジュールページの説明の翻訳:
Spreadsheet_Excel_Writerは、PHPのPerlでのSpreadsheet :: WriteExcelポートとして登場しました。 COMオブジェクトを接続することなく、Excelスプレッドシートを生成できます。 数式、BMP画像、あらゆる種類のテキストおよびセルの書式設定をサポートします。
環境: PHP 5およびPEARを搭載したオペレーティングシステム。 私のアーカイブでは、オフラインで作業するためのPEARアセンブリ。
依存関係: PEARおよびOLEパッケージ(OLEコンテナーの読み取りおよび書き込み用パッケージ) 。
バージョンおよびリリース日: 0.9.1(ベータ)は2006-09-26にリリースされました</ h
これは、ライブラリが完全に完成しているわけではありませんが、必要な機能のほとんどすべてが存在するため、誰もそれ以上記述しないことを示しています。 一方、ライブラリコードは安定しており、ほとんど変更されていないため、多くのエラーを識別できました(ただし、修正されていません:( )。最新バージョンはExcel 8.0(Office '98)で動作するように調整されています。ほとんどすべての最新のスプレッドシートプログラム(MS Office 2003、MS Office XP、MS Office 2007、バージョン1からバージョン3のOpenOffice)のテーブルファイル。この場合、テーブルはほとんど同じように見えます。
さらに、このライブラリは、ローカライズの点で制限されないという点で優れています(ユニコードを使用できますが、構成する必要があります。詳細は以下を参照)。
ライセンス: LGPL クラスコードは、商用プロジェクトのライブラリとして使用できます( wikiから:GNU LGPLは、GNU GPLと互換性のないライセンスの下で、このライブラリまたはプログラムプログラムとのリンクを許可します 。ただし、そのようなプログラムは(L) GPL、バインディングによる場合を除く )。
使用する
それでは始めましょう。
PEARおよび必要なパッケージをダウンロード、インストール、構成する必要があります。 または、アーカイブから使用するだけです。
次に、プログラミングを始めましょう。
注意:データをすぐにユーザーに出力し、ディスクに保存しない場合、スクリプトは標準のエコーおよび印刷出力関数を使用して無関係なデータを出力しないでください。そうしないと、バイナリテーブルファイルの構造が破壊されます。
例
例0

これは最も単純な例です。 2次元配列から単純にデータを出力してみましょう。 説明はステップに分けられます。 それらを接続することにより、目的のスプレッドシートを取得できます。
手順1. ライブラリを接続します。
<?php
// PEAR
$path = realpath(dirname(__FILE__).'/pear/');
//
set_include_path(dirname(__FILE__). PATH_SEPARATOR . $path);
require_once('PEAR.php');
// PEAR::Spreadsheet_Excel_Writer
require_once "Spreadsheet/Excel/Writer.php";
?>
ステップ2. オブジェクトの初期化
<?php
//
$xls =& new Spreadsheet_Excel_Writer();
// Excel
$xls->setVersion(8);
// HTTP xx x
$xls->send('excel_'.date("H_i_s").'.xls'); // excel_17_16_18.xls
?>
ステップ3. 変数$ sheetに「 info 」という名前のシートを作成します
<?php
// , x
$sheet = $xls->addWorksheet('info'); //
?>
ステップ4. UTF-8シートのエンコードを設定する
<?php
$sheet->setInputEncoding('UTF-8');
?>
ステップ5. データ:2次元配列$テーブル
<?php
$table = array(
'Header 1' => array(1, 2, 3),
'Header 2' => array(4, 5, 6),
'Header 3' => array(7, 8, 9)
);
?>
手順6. テーブルに$テーブル配列のデータを入力します。 ループを使用して、変数$ cellおよび$ rowを初期化します。ここで、
$ cell-列
$行は文字列です。
シートにデータを追加します。 配列を実行すると、関数を使用してデータが列に書き込まれます。
$ sheet-> write($行、$セル、$ヘッダー); -$ヘッダーデータをセルに書き込みます($行; $セル)
$ sheet-> writeCol($ row、$ cell、$ row_data); -($ row; $ cell)で始まる列row_dataをセルに書き込みます。
<?php
$cell = 0;
foreach ($table AS $header => $row_data){
$row = 0;
$sheet->write($row, $cell, $header);
$row++;
$sheet->writeCol ($row, $cell, $row_data);
$cell++;
}?>
ステップ7. ライブラリを終了し、データを送信します
<?php
$xls->close();
?>
残りの例を使用して、情報を出力する形式と方法を簡素化します。
例1

この例では、フォーマットの概念を紹介します。 フォーマットは、セルまたはセルのグループの設計を記述するオブジェクトです。
<?php
//
$textFormat =& $xls->addFormat();
//
$textFormat->setSize(10);
//
$textFormat->setColor('black');
$textFormat->setAlign('center');
$textFormat->setBorder(1);
?>
メソッドはそれ自体を物語っています。
このスタイルは、セルを作成するときに適用できます。
<?php
$sheet->write($row, $cell, $data, $textFormat); //
?>
例2
ライブラリの問題の1つを「クランチ」で解決します。 どうやって? この場合、ループの列幅を決定します。 列セルの最大行長の配列を取得し、$ cell-> setColumn($ cell、$ cell、$ celLenght)関数を使用して手動で列幅を設定します。 )

例3
乗算表をExcelスプレッドシートに出力します。 言葉遊び;)

例4
ワークシートでExcelの数式を使用します。 PHPの力があれば、それはかなり無意味ですが、時には役に立つこともあります。

例5
スタイル形式を作成するときに使用できる色の表を表示する便利なスクリプト。

例付きアーカイブ
アーカイブ内のファイル(zip形式、サイズ〜200kb、エンコードUTF-8テキストファイル):
excel.php-シンプルなシート(例0) 。
excel_1.php-フォーマットされたシート(例1) ;
excel_2.php-列幅を手動で決定したシート(例2);
excel_3.php-乗算表;) (例3)
excel_4.php-数式付きシート(例4) ;
excel_5.php-花のあるシート(例5) ;
ライブラリを持つ梨のお父さん。
例のxlsファイルを含むパパの例(知人向け)。
問題
ローカリゼーション:
機能により解決
$xls->setVersion(8); // Excel, - ,
$sheet->setInputEncoding('UTF-8'); // -
これで、「クリーンな」UTF-8でデータを書き込むことができ、Excelが理解します;)
エラーは次のとおりです。
クラスの作成者は間違いを犯しました。 ただし、Excel 8でUTF-8で記述し、大量(> 200行、複数のシート)に記述した場合にのみ発生します。 アーカイブでは、ファイルにパッチがあり、問題を解決するバグトラッカーにあります。
おわりに
私たちの仕事を要約します。 PHPを使用してスプレッドシートを作成する基本的なスキルを習得しました。 アーカイブおよび開発者のサイトの例を調べることにより、これらのスキルを向上させることができます。
最後に、最初に書く必要があったものを書きます。 したがって、プロジェクトでSpreadsheet_Excel_Writerライブラリを使用することの長所と短所。
長所:
+プラットフォームの独立
+数式を入力する機能(英語版から)
+通常OpenOffice.org CALCで開きます
+ void Worksheet :: insertBitmap経由で写真を追加できます
短所:
-列幅の手動決定(誰かがエレガントなソリューションを見つけた場合-私は心から感謝します)
-グラフィックを追加することはできません(特に不要です)
参照用にも推奨:
記事「PHPを使用してExcelスプレッドシートを作成する」(rus)
梨のサイト(英語)
Excel Writerクラス関数のリスト
Excel関数リスト