私の記事「Microsoft Wordドキュメントの作成方法PHPでドキュメントの作成方法」(Windowsの下での互換性機能を使用)の後、純粋なPHP実装を促すコメントがかなりありました。つまり、ユニバーサルPHPライブラリを使用してオフィスファイルを操作しました。
この記事では、PHPExcelライブラリを使用してWebアプリで「Excelにエクスポート」機能を提供する方法を確認して、ユーザーがデータをExcel 2007/2013ファイルにエクスポートしてさらに分析できるようにします。 >注:Excel(およびOffice)のファイル操作を提供できるPHPライブラリがいくつかあります。ここで使用するlibは、phpofficeのサブセットであるphpexcelと呼ばれ、ここでクローニングできます。
キーテイクアウト
準備
index.phpは、Silexアプリケーションのエントリポイントになります。定義された2つのルートがあります:
<span>$app->get('/', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->index($app); </span><span>}); </span> <span>$app->post('/export', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->export($app); </span><span>});</span>
route '/'はエントリポイントであり、データと「エクスポート」ボタンを表示します。ルート '/エクスポート'は、実際にExcelにエクスポートするバックエンドハンドリングプロセスを行います。両方の関数は、ユーザー定義のクラス(classexcel.php)に包まれています。この記事の残りの部分では、このファイルに焦点を当てます。より正確には、このファイルで定義されているエクスポート機能と関連する関数に焦点を当て、PHPExcelライブラリを使用してExcel操作のいくつかの重要な側面について説明します。
Excelアプリケーションインスタンスは通常、物理Excelファイルにマッピングされます。作成したファイルを説明する独自のメタデータがあります。メタデータは、Excelファイルを「Alt-Enter」したときに表示されます(または、そのファイルを右クリックして「プロパティ」を選択します):
<span>$ea = new <span>\PHPExcel</span>(); // ea is short for Excel Application</span>
上記のダイアログに示されているプロパティには、これらのプロパティを設定するための対応するsetxxxxメソッドがあります。ここで、xxxxはダイアログにリストされているプロパティ名とほぼ同じです。
メソッド(setXXXX)は非常に自明であり、「プロパティ」ダイアログに非常によくマップされています。マッピングにはいくつかの矛盾がありますが、接続を行うのはそれほど難しくありません(たとえば、「著者」は作成者にマッピングされます)。
ワークシートとセルの母集団
ワークシートは、おそらく最も操作するオブジェクトです。セルをデータまたは式で入力する、スタイルの適用、データフィルタリングの実行、チャートの挿入など。
ワークシートへの参照を取得するには、次のことを使用します。<span>$ea->getProperties() </span> <span>->setCreator('Taylor Ren') </span> <span>->setTitle('PHPExcel Demo') </span> <span>->setLastModifiedBy('Taylor Ren') </span> <span>->setDescription('A demo to show how to use PHPExcel to manipulate an Excel file') </span> <span>->setSubject('PHP Excel manipulation') </span> <span>->setKeywords('excel php office phpexcel lakers') </span> <span>->setCategory('programming') </span> <span>;</span>
ワークブック内のシートは常に0インデックスされています。したがって、最初の(そして今までの唯一の)シートはシートゼロになります。このシートのデフォルト名は常に「ワークシート」であり、Settitleメソッドで変更できます。
これらの見出し、タイトル、その他の説明項目については、SetCellValueメソッドを使用して1つずつ入力します。
構造化されたデータの場合、そのほとんどはSQL Selectステートメントに由来するため、FromArrayメソッドを使用します。
<span>$ews = $ea->getSheet(0); </span><span>$ews->setTitle('Data');</span>
FromArrayメソッドには3つのパラメーターが必要です 1。配列形式のデータソース。
2。データがnullの場合の「フィラー」値。
3.充填を開始するためのセルの参照(左から右へ、次にダウンまで)。注:PDOを使用してデータを取得する場合、単純な$ res = $ q-> fetchall(pdo :: fetch_assoc);呼び出しは、返された結果データセットに、インデックスなしで関連する配列のみを含むように強制されます。 fetchallがオプションPDO :: fetch_assocなしで呼び出された場合、結果セットには、実際には、関連する配列形式の2つのセット、1つはインデックス形式の1つが含まれ、fromArrayを使用するときにExcelファイルに複製を作成します。
また、ヘッダーの行(ID、シーズンなど)をスタイリングすることもできます。それを行うには、2つの方法もあります1つの方法は、いくつかのGETメソッドを使用して、変更して変更するスタイルオブジェクトを取得することです。これを「バックグラウンドフィル」スタイルで行います。
<span>$app->get('/', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->index($app); </span><span>}); </span> <span>$app->post('/export', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->export($app); </span><span>});</span>
もう1つは、「スタイル」アレイを宣言し、変更したいスタイルとそれらを変更するスタイルを指定することです。次に、ApplyFromArrayを使用して、バッチにスタイルを適用します。ここでは、フォントとアライメントを変更しました。
両方の方法は、パラメーター($ header = 'a1:h1';)として範囲をサポートしています。これは非常に便利です。
最後に、各列に表示された最大長に合うように、列の幅を調整することをお勧めします。
残念ながら、これは範囲パラメーターをサポートしていないため、ループを使用してこれを実現します。
<span>$ea = new <span>\PHPExcel</span>(); // ea is short for Excel Application</span>
別のシートを追加し、式を挿入します
になります
AddSheetメソッドには2つのパラメーターが必要です。
<span>$ea->getProperties() </span> <span>->setCreator('Taylor Ren') </span> <span>->setTitle('PHPExcel Demo') </span> <span>->setLastModifiedBy('Taylor Ren') </span> <span>->setDescription('A demo to show how to use PHPExcel to manipulate an Excel file') </span> <span>->setSubject('PHP Excel manipulation') </span> <span>->setKeywords('excel php office phpexcel lakers') </span> <span>->setCategory('programming') </span> <span>;</span>
$ ews2:挿入するExcelワークシートインスタンス;
ご覧のとおり、前のセクションで行ったことと違いはありません。式文字列は、必要な計算を実行するためにExcelファイルに入力するものとまったく同じです。
注:細胞参照(G2:G91)に特に注意してください。その式を書く怠zyな方法は、g:gのような範囲を使用することです。これは、シートにチャートがない場合に正常に機能します。チャートがある場合、g:g表記は失敗し、例外がスローされます。<span>$ews = $ea->getSheet(0); </span><span>$ews->setTitle('Data');</span>
この「要約」シートは次のようになります:
細胞b4に示されている%は次のコードで設定されています。
ここでいくつかのスタイリングの問題に注意してください。 A1の場合、次のスタイルを適用しました
<span>$app->get('/', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->index($app); </span><span>}); </span> <span>$app->post('/export', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->export($app); </span><span>});</span>
結果は、フォントの重み、フォントサイズ、およびアライメントが正しく適用されていることを示しています。 A1とB1のA1へのマージも正しく行われます。ただし、Setautosizeメソッドは、このマージされたセルで失敗します。その結果、このセル(A1)はまだ絞られています。これは、自動幅の計算が常に機能するとは限らないことを意味します。とにかく、大したことではありません。
データを視覚的に表現することは常に素晴らしいことです。そのため、チャートは役に立ちます。 Excelには、選択できる豊富な組み込みチャートセットがあります。 Phpexcelは、これらのほぼすべてをタップすることができます。私たちが作成する最初のチャートは、レイカーズチームとその対戦相手の各ゲームのスコアの浮き沈みを示すラインチャートです。
チャートを作成することは、ライブラリのサポートがあっても、長いコーディングジョブです。このプロセスの完全なコードは、classexcel.phpファイルに存在するAddChart1およびAddChart2メソッドに記載されています。重要な手順を説明します。
<span>$ea = new <span>\PHPExcel</span>(); // ea is short for Excel Application</span>
タイプ。ラベルの場合、間違いなく「文字列」;
コンストラクターは同じであるため、パラメーターも同じです。
<span>$ea->getProperties() </span> <span>->setCreator('Taylor Ren') </span> <span>->setTitle('PHPExcel Demo') </span> <span>->setLastModifiedBy('Taylor Ren') </span> <span>->setDescription('A demo to show how to use PHPExcel to manipulate an Excel file') </span> <span>->setSubject('PHP Excel manipulation') </span> <span>->setKeywords('excel php office phpexcel lakers') </span> <span>->setCategory('programming') </span> <span>;</span>
データシリーズ値
チャートタイプ
<span>$ews = $ea->getSheet(0); </span><span>$ews->setTitle('Data');</span>
データシリーズの値のカウント
<span>$app->get('/', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->index($app); </span><span>}); </span> <span>$app->post('/export', function () use ($app) </span><span>{ </span> <span>$c=new trExcel<span>\Excel</span>(); </span> <span>return $c->export($app); </span><span>});</span>
プロット領域には、チャートとデータシリーズのレイアウトが含まれています。レイアウトは、チャートに値、パーセンテージなどを表示するかどうかを指定できます。デフォルトのレイアウトが使用されるようにnullを使用できます。
凡例は、データグループの視覚的表現を提供するために使用されます。
そして、最後に、チャートを作成できます:
<span>$ea = new <span>\PHPExcel</span>(); // ea is short for Excel Application</span>
を介して作成できます
<span>$ea->getProperties() </span> <span>->setCreator('Taylor Ren') </span> <span>->setTitle('PHPExcel Demo') </span> <span>->setLastModifiedBy('Taylor Ren') </span> <span>->setDescription('A demo to show how to use PHPExcel to manipulate an Excel file') </span> <span>->setSubject('PHP Excel manipulation') </span> <span>->setKeywords('excel php office phpexcel lakers') </span> <span>->setCategory('programming') </span> <span>;</span>
注:ほとんどの場合、セルの参照はケースの鈍感ですが、シートにチャートがある場合は大文字の番号を使用してください。
ファイルを保存
<span>$ews = $ea->getSheet(0); </span><span>$ews->setTitle('Data');</span>
保存プロセスでsetincludecharts(true)があることを確認してください。そうしないと、チャートは存在しません。
phpexcelがほぼすべてのチャートタイプを活用できると言ったことを覚えていますか?このLIBがExcel 2013でうまくいかないという例外の1つは、使用可能なパイチャートを作成しないことです。 output.xlsxとコードでは、実際にパイチャート(addchart1で行われます)を作成しましたが、output.xlsxを開くと、Excel 2013はエラーを促します。 [続行]を選択すると、パイチャートが失われ、ラインチャートのみ(AddChart2で行われます)が保存されます。バグレポートはすでにGITリポジトリに提出されています。
「データ」シートは次のようになります
およびチャートのズームインビュー。正しく配置され、サイズがあります:
結論
Excelファイルで他の一般的な機能をカバーしていません。関心が十分に高い場合は、それらに関するフォローアップ記事を書きます。教えてください!
その公式ドキュメントと例は、一般的なタスクの詳細なAPI使用状況の説明と実行可能なコードスニペットを見つけるのに最適な場所です。それらを徹底的に読んでください。それらはクローンされたリポジトリで見つけることができます。 このライブラリを試してみて、あなた自身のユースケースをお知らせください!
PHPEXCELでExcelファイルとチャートを生成することに関するよくある質問(FAQ)
phpexcelを使用して基本Excelファイルを作成するにはどうすればよいですか? phpexcelクラスの。次に、タイトル、説明、著者などのExcelファイルのプロパティを設定できます。その後、セルにアクセスして値を設定することにより、Excelファイルにデータを追加できます。最後に、Writerを作成して保存メソッドを呼び出すことでExcelファイルを保存できます。
phpexcelは、ExcelファイルからPDFSの生成をサポートします。 PDFを生成するには、タイプPDFのライターを作成し、保存メソッドを呼び出す必要があります。プロジェクトに適切なPDFレンダリングライブラリをインストールしている必要があることに注意してください。
phpexcelは例外を使用してエラーを処理します。エラーが発生すると、phpexcelは例外をスローします。トライキャッチブロックを使用してこれらの例外をキャッチし、適切に処理できます。これにより、プログラムのフローを制御し、ユーザーに意味のあるエラーメッセージを提供できます。
以上がExcelファイルとphpexcelを使用してチャートを生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。