ホームページ > バックエンド開発 > PHPチュートリアル > Excelファイルとphpexcelを使用してチャートを生成します

Excelファイルとphpexcelを使用してチャートを生成します

William Shakespeare
リリース: 2025-02-20 09:33:14
オリジナル
866 人が閲覧しました

Excelファイルとphpexcelを使用してチャートを生成します

私の記事「Microsoft Wordドキュメントの作成方法PHPでドキュメントの作成方法」(Windowsの下での互換性機能を使用)の後、純粋なPHP実装を促すコメントがかなりありました。つまり、ユニバーサルPHPライブラリを使用してオフィスファイルを操作しました。

この記事では、PHPExcelライブラリを使用してWebアプリで「Excelにエクスポート」機能を提供する方法を確認して、ユーザーがデータをExcel 2007/2013ファイルにエクスポートしてさらに分析できるようにします。 >

注:Excel(およびOffice)のファイル操作を提供できるPHPライブラリがいくつかあります。ここで使用するlibは、phpofficeのサブセットであるphpexcelと呼ばれ、ここでクローニングできます。

キーテイクアウト

phpofficeのサブセットであるphpexcelは、Excelファイルの純粋なphp操作を可能にし、互換性とWindowsの依存関係を回避します。

チュートリアルでは、ゲームデータ、追加の分析、およびPHPExcelを使用してデータの表示と分析を強化したChartを使用してExcelファイルを作成することを示しています。 必要なセットアップには、5.2.0を超えるPHPバージョンが含まれ、特定のPHP拡張機能を有効にし、PHPExcelインストールにComposerを使用しています。
    PHPEXCELでは、プロパティの設定、ワークシートの居住、式の挿入、視覚的に魅力的なチャートの作成など、詳細なExcelファイル操作が可能です。
  • 最終出力では、Excelファイルをダウンロード可能な形式で保存し、チャートを確実に含め、PhpexcelがExcel 2013でPieチャートを効果的に処理できないことにメモが含まれています。
  • 目的
  • このチュートリアルの後、
  • を取得します
  • 2013-14シーズンに、お気に入りのNBAチームであるLa Lakersのゲーム情報(日付、チーム、スコア、勝ち負けステータス)を示すシート。
  • データをExcel 2013ファイルにエクスポートするボタン。
  • そのExcelファイルには、追加の分析データとPHPとExcelによって生成されるチャートが入力されます。

始めましょう。

準備

    phpexcelを使用するには、5.2.0を超えるPHPバージョンが必要です。有効にする3つのPHP拡張機能もあります:PHP_ZIP(オフィス2007形式を操作するために不可欠)、PHP_XML、PHP_GD2(オプションですが、正確な列幅の自動計算に必要です)。
  • 次に、Composerを介してライブラリをインストールします。
  • もちろん、データベースを稼働させて実行する必要があります。このチュートリアル(lakers.sql)のデータダンプは、この記事に関連付けられたレポにアップロードされました。データは、単純なSQLステートメント「Select * From Lakers」(8つのプレシーズンと82のレギュラーシーズンゲームを含む合計90のレコード)で取得されます。
  • また、このデモはMVCフレームワークとしてSilexを使用します。小枝はテンプレートエンジンとして使用されます。必要な依存関係がComposer.jsonファイルで正しく指定されていることを確認してください。
  • インデックスファイル

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アプリケーションが開始されます。通常の状況では、3(Excel 2013、1つのみ)のワークシートを持つワークブックも含まれます。ワークシートは、私たちが遊ぶ「キャンバス」です。これらは、Excelで最も重要な2つの用語です。その他の重要な用語には、セル、範囲などが含まれます Excelファイルをインスタンス化するには、次のことを使用します

Excelアプリケーションインスタンスは通常、物理Excelファイルにマッピングされます。作成したファイルを説明する独自のメタデータがあります。メタデータは、Excelファイルを「Alt-Enter」したときに表示されます(または、そのファイルを右クリックして「プロパティ」を選択します):

<span>$ea = new <span>\PHPExcel</span>(); // ea is short for Excel Application</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

上記のダイアログに示されているプロパティには、これらのプロパティを設定するための対応するsetxxxxメソッドがあります。ここで、xxxxはダイアログにリストされているプロパティ名とほぼ同じです。

メソッド(setXXXX)は非常に自明であり、「プロパティ」ダイアログに非常によくマップされています。マッピングにはいくつかの矛盾がありますが、接続を行うのはそれほど難しくありません(たとえば、「著者」は作成者にマッピングされます)。 Excelファイルとphpexcelを使用してチャートを生成しますワークシートとセルの母集団

ワークシートは、おそらく最も操作するオブジェクトです。セルをデータまたは式で入力する、スタイルの適用、データフィルタリングの実行、チャートの挿入など。

ワークシートへの参照を取得するには、次のことを使用します。
<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メソッドで変更できます。

細胞/細胞を入力するには、少なくとも2つのオプションがあります。

これらの見出し、タイトル、その他の説明項目については、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>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    今すぐファイルを保存している場合 - 後で保存について説明します - XLSXファイルがデータで満たされ、適切にフォーマットされていることがわかります:

    別のシートを追加し、式Excelファイルとphpexcelを使用してチャートを生成しますを挿入します

    常に別のシートを使用して元のデータと少なくとも1つのシートを保存して、要約および/または分析情報を表示します。

    新しいワークシートを挿入するには、

    になります

    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ワークシートインスタンス;

    $場所:このワークシートのインデックス。したがって、0は1番目のものになることを意味します。 -1は、それが最後のものでなければならないことを意味します。
  • ワークシートを挿入すると、通常どおりこのワークシートにセルを入力してスタイルを適用できます。このシートでは、フォーミュラを使用します:

ご覧のとおり、前のセクションで行ったことと違いはありません。式文字列は、必要な計算を実行するためにExcelファイルに入力するものとまったく同じです。

注:細胞参照(G2:G91)に特に注意してください。その式を書く怠zyな方法は、g:gのような範囲を使用することです。これは、シートにチャートがない場合に正常に機能します。チャートがある場合、g:g表記は失敗し、例外がスローされます。
<span>$ews = $ea->getSheet(0);
</span><span>$ews->setTitle('Data');</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

この「要約」シートは次のようになります:

細胞b4に示されている%は次のコードで設定されています。

Excelファイルとphpexcelを使用してチャートを生成しますここでいくつかのスタイリングの問題に注意してください。 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メソッドに記載されています。重要な手順を説明します。

    データシリーズラベル
データシリーズラベルは、名前(ラベル)を与えることでデータシリーズを識別します。私たちの場合、レイカーズとその対戦相手のスコアを見せたい場合は、セルフスコアと相手スコアの2つのラベルを検討しています。それらのラベルはそれぞれD1とE1にあります:

<span>$ea = new <span>\PHPExcel</span>(); // ea is short for Excel Application</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
データシリーズラベルは、実際にはphpexcel_chart_dataseriesvaluesインスタンスです。コンストラクターには、4つのパラメーターが含まれています

タイプ。ラベルの場合、間違いなく「文字列」;
    である必要があります
  1. ソース。 D1またはe1;
  2. にあります
  3. 形式。通常、nullを提供するだけで十分で、デフォルト形式が使用されます;
  4. count。ソース内のデータの量。通常、1。
  5. である必要があります

x軸値ラベル
  • これは、x軸のラベルを識別します。たとえば、「2013-11-15」では、レイカーズは86を獲得し、相手は89を獲得しました。「2013-11-15」は、これら2つのスコアのラベルです。私たちの場合、行2から行91までの「日付」列を使用します。

コンストラクターは同じであるため、パラメーターも同じです。

<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>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー

データシリーズ値

  • 「セルフスコア」(列D)および「相手スコア」(列E)を使用します。どちらも行2から91行です
  • 上記の3つの重要な変数があると、データシリーズを設定できます。 Excelでは、データシリーズには、チャートを作成するために不可欠な以下の情報が含まれています。

チャートタイプ

<span>$ews = $ea->getSheet(0);
</span><span>$ews->setTitle('Data');</span>
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
グループ化

データシリーズの値のカウント

    データシリーズラベル
  • x軸値ラベル
  • データシリーズ値
  • そして、コンストラクターは、これらすべてのパラメーターをすべて渡すだけで呼び出されます:
  • 次に、プロット領域と凡例を作成します:
  • <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>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    このコンストラクターの唯一の新しいパラメーターは、チャートの名前です。 「Chart1」は十分です。チャートのタイトルは、

    を介して作成できます

    <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>
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    ログイン後にコピー
    工場パターンを使用して、ファイルを保存するためにライターオブジェクトを作成します。フォーマットが指定されます(この場合は「Excel2007」形式を使用します)。

    保存プロセスでsetincludecharts(true)があることを確認してください。そうしないと、チャートは存在しません。

    phpexcelがほぼすべてのチャートタイプを活用できると言ったことを覚えていますか?このLIBがExcel 2013でうまくいかないという例外の1つは、使用可能なパイチャートを作成しないことです。 output.xlsxとコードでは、実際にパイチャート(addchart1で行われます)を作成しましたが、output.xlsxを開くと、Excel 2013はエラーを促します。 [続行]を選択すると、パイチャートが失われ、ラインチャートのみ(AddChart2で行われます)が保存されます。バグレポートはすでにGITリポジトリに提出されています。

    「データ」シートは次のようになります

    Excelファイルとphpexcelを使用してチャートを生成しますおよびチャートのズームインビュー。正しく配置され、サイズがあります:

    Excelファイルとphpexcelを使用してチャートを生成します結論

    この記事では、Excelを操作するために純粋なPHPと純粋なPHP lib(phpexcel)を使用する方法を示しました。新しいファイルを作成し、データを入力し、新しいシートと分析データに追加され、チャートを挿入し、最後にダウンロード用のファイルを保存しました。

    一般的に、私はこのphpexcel libが試してみる価値があり、簡単に学ぶ価値があることがわかりました。 IDEでのコード洞察は、プログラミング時に大いに役立ちます。

    Excelファイルで他の一般的な機能をカバーしていません。関心が十分に高い場合は、それらに関するフォローアップ記事を書きます。教えてください!

    その公式ドキュメントと例は、一般的なタスクの詳細なAPI使用状況の説明と実行可能なコードスニペットを見つけるのに最適な場所です。それらを徹底的に読んでください。それらはクローンされたリポジトリで見つけることができます。 このライブラリを試してみて、あなた自身のユースケースをお知らせください!

    PHPEXCELでExcelファイルとチャートを生成することに関するよくある質問(FAQ)

    プロジェクトにphpexcelをインストールするにはどうすればよいですか?

    プロジェクトにphpexcelをインストールするには、PHPの依存関係管理ツールであるComposerを使用する必要があります。まず、そうしていない場合は、作曲家をインストールする必要があります。 Composerをインストールした後、ターミナルのProject Directoryに移動し、Command Composerがphpoffice/phpexcelを要求します。このコマンドは、プロジェクトにphpexcelをダウンロードしてインストールします。

    phpexcelを使用して基本Excelファイルを作成するにはどうすればよいですか? phpexcelクラスの。次に、タイトル、説明、著者などのExcelファイルのプロパティを設定できます。その後、セルにアクセスして値を設定することにより、Excelファイルにデータを追加できます。最後に、Writerを作成して保存メソッドを呼び出すことでExcelファイルを保存できます。

    phpexcelを使用してExcelファイルにチャートを追加するにはどうすればよいですか?ファイルPhpexcelを使用すると、最初にデータシリーズを作成する必要があります。データシリーズは、チャートに表示されるデータを表します。データシリーズを作成した後、チャートを作成してデータシリーズを追加できます。次に、タイトルや凡例などのチャートのプロパティを設定できます。最後に、AddChartメソッドを呼び出すことでワークシートにチャートを追加できます。最初にリーダーを作成する必要があります。読者は、Excelファイルを開き、その内容を読み取る責任があります。読者を作成した後、Loadメソッドを呼び出すことでExcelファイルをロードできます。次に、セルにアクセスして値を取得してExcelファイルのデータにアクセスできます。既存のExcelファイルPHPEXCELを使用して、最初にリーダーを作成し、Excelファイルをロードする必要があります。次に、Excelファイルのセルにアクセスして、値を設定できます。データを変更した後、ライターを作成して保存メソッドを呼び出すことで変更を保存できます。 Excelファイルのセルをフォーマットする方法。セルのフォント、色、アライメント、境界線、および数値形式を設定できます。また、セルをマージし、セルの幅と高さを設定し、セルにスタイルを適用することもできます。メモリの制限のために挑戦的になる可能性があります。ただし、PHPExcelは、メモリの使用量を削減するのに役立つセルキャッシング機能を提供します。セルキャッシングを有効にすることにより、PHPExcelはメモリの代わりにセルデータをキャッシュに保存し、メモリの使用量を大幅に削減できます。

    phpexcelを使用してexcelファイルからpdfを生成するにはどうすればよいですか?

    phpexcelは、ExcelファイルからPDFSの生成をサポートします。 PDFを生成するには、タイプPDFのライターを作成し、保存メソッドを呼び出す必要があります。プロジェクトに適切なPDFレンダリングライブラリをインストールしている必要があることに注意してください。

    phpexcelを使用してExcelファイルに画像を追加するにはどうすればよいですか? 。画像を追加するには、描画オブジェクトを作成し、画像のパスを設定し、ワークシートに画像を配置する必要がある座標を指定する必要があります。

    phpexcelは例外を使用してエラーを処理します。エラーが発生すると、phpexcelは例外をスローします。トライキャッチブロックを使用してこれらの例外をキャッチし、適切に処理できます。これにより、プログラムのフローを制御し、ユーザーに意味のあるエラーメッセージを提供できます。

以上がExcelファイルとphpexcelを使用してチャートを生成しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート