space

PHPExcelの使い方・エクセル操作方法のまとめ

  • 2014年10月18日

phpexcel

あまり分かりやすくまとまっているサイトがなかったのと、英語を読みたくないので、最近使用した部分について自分用にまとめておきます。

使用していない部分は随時追加していきます。

最低限の基本的な使い方はPHPでエクセル(xlsx&xls)を扱う方法を読んでください。

ライブラリの読み込み

この文章を入れないと、エクセル操作をすることができません。

ちなみに上記の例は、エクセル操作をするphpファイルと同じ階層にclassesフォルダが設置されている場合のものになります。

 

エクセルファイルの新規作成

テンプレートを読み込んだりせず、エクセルファイルを新規作成する場合は、このコードを使用します。

 

既存のエクセルファイルの読み込み

例えば、テンプレートファイルがエクセル操作を行うPHPファイルと同じ階層にあるなら、下記のように入力する。

 

エクセルファイルの出力

 サーバーの実行ファイルと同じ階層に出力させたいなら、下記のような感じで入力する。

 ちなみにこの出力方法だと、ブラウザから自動的にダウンロードされないことがあるので、下記コードも併せて記載した方がいいかもしれません。

 

シート

シートの設定方法

エクセルファイルを新規作成したときは、

上記の0の部分が1や2などになっているとエラーが出ます。

テンプレートを読み込んでいる場合、対応しているシートがあればエラーは発生しません。

つまり、存在しないシートを有効化しようとするとエラーが出るということですね、当たり前ですが(笑)

2番目のシートがあれば1、3番目のシートがあれば2と入力してシートを有効化することができます。

また、エクセルファイルを新規作成した場合のシート名のデフォルトはWorksheetになります。

シートのその他

 addSheetの第2引数が何もなければ、シートの最後に追加されます。

シート名が重複しないように注意が必要です。

 シート名では削除できません。何番目のシートか取得して削除する必要があります。

値の入力

値の設定には、setCellValueを使用します。

値の設定はセル名か、列座標と行座標を指定して設定することができます。

例えば、セルのA1に「こんにちは」と設定したい場合は、下記のようになります。

列番号と行番号で指定する場合は、行は1から、列は0から始まることに注意しておく必要があります。

画像の貼り付け

画像の貼り付けは、画像用のオブジェクトを作成して、オブジェクトに情報を追加して、シートに貼り付けます。

他にも様々なプロパティが用意されていますが、貼り付けに必要そうなものだけを記載しています。

数値を指定するところの単位ですが、エクセル2007形式で出力する場合はピクセルになっているような気がするんですが、97~2003形式だとピクセルじゃないような気がします。

それと、ドキュメントや色んなサイトを見ましたが、画像の列番号と行番号による位置の指定方法は分かりませんでした。

セルの結合

セルの結合は、mergeCellsを使用します。

セルの結合の場合は、ByColumnAndRowで範囲指定が可能でした。

例えば、セルA1~A10までを結合したい場合、下記のように書きます。

セルの書式設定

書式に関してはこの文章から始まります。

getstyleもByColumnAndRowを使用すれば座標でセルを指定することが可能です。

ただし、値の入力のように座標での範囲指定はできませんでした。

座標指定で範囲を指定する場合は、座標をセル名に置き換えてくれるstringFromColumnIndexメソッドを使用する必要があります。

 

フォントスタイル

フォントのスタイルを設定する場合は、getStyleの後に上記のようにgetFontメソッドを繋げます。

設定できるスタイルは下記の通りになります。

フォントカラーの設定におけるARGB値は透明度、赤、緑、青の値を16進数で表して連結した値です。

例えば、赤の場合は、

FFFF0000

という値になります。

色名に関しては、以下の表を参考にしてください。

色名

ARGB値

COLOR_BLACK

FF000000

COLOR_WHITE

FFFFFFFF

COLOR_RED

FFFF0000

COLOR_DARKRED

ワインレッド

FF800000

COLOR_BLUE

FF0000FF

COLOR_DARKBLUE

藍色

FF000080

COLOR_GREEN

FF00FF00

COLOR_DARKGREEN

深緑

FF008000

COLOR_YELLOW

FFFFFF00

COLOR_DARKYELLOW

濃い黄

FF808000

また、setARGBのほかにsetRGBを使用することでRGBカラーを使用することもできます。

setRGBの場合は、ARGB値の透明度を除外した、赤、緑、青の値を16進数を表して連結した値で色を指定します。

例えば、赤の場合だと、

FF0000

という値になります。

RGBと16進数カラーコードの相互変換ツールのページで色を16進数のRGB値に変換できます。

参考にしてみてください。

罫線

罫線を引く場合は、getBordersを使用します。

次に罫線を引きたい場所を指定します。

罫線を引く場所を指定した後、さらにsetBorderStyleを指定することで罫線のスタイルを指定できます。

引数に罫線スタイルの定数を指定して使用します。

例えば、通常の罫線を引きたい場合は、

という風に記載します。

用意されているボーダーの定数は、

ボーダースタイル名

PHPExcel_Style_Border::BORDER_NONE

罫線なし

PHPExcel_Style_Border::BORDER_THIN

細めの線

PHPExcel_Style_Border::BORDER_MEDIUM

少し太い線

PHPExcel_Style_Border::BORDER_DASHED

破線

PHPExcel_Style_Border::BORDER_DOTTED

点線

PHPExcel_Style_Border::BORDER_THICK

太線

PHPExcel_Style_Border::BORDER_DOUBLE

二重線

PHPExcel_Style_Border::BORDER_HAIR

凄く細かくて細い点線

PHPExcel_Style_Border::BORDER_MEDIUMDASHED

太めの破線

PHPExcel_Style_Border::BORDER_DASHDOT

細めの一点鎖線

PHPExcel_Style_Border::BORDER_MEDIUMDASHDOT

太めの一点鎖線

PHPExcel_Style_Border::BORDER_DASHDOTDOT

細めの二点鎖線

PHPExcel_Style_Border::BORDER_MEDIUMDASHDOTDOT

太めの二点鎖線

PHPExcel_Style_Border::BORDER_SLANTDASHDOT

一点鎖線(線の切り口が斜め)

 

ボーダーの色の設定にはgetColorを使用し、その後setARGBかsetRGBを使用して色を指定します。

色の指定方法に関しては、フォントスタイルのところを参照してください。

 

文字配置

文字配置を設定する時はgetAlignmentを使用します。

横位置の配置を設定する場合は、setHorizontalを繋げます。

引数に下記の定数を指定します。

横位置の配置スタイル名

配置

PHPExcel_Style_Alignment::HORIZONTAL_GENERAL

標準

PHPExcel_Style_Alignment::HORIZONTAL_LEFT

左詰め(インデント)

PHPExcel_Style_Alignment::HORIZONTAL_RIGHT

右詰め(インデント)

PHPExcel_Style_Alignment::HORIZONTAL_CENTER

中央揃え

PHPExcel_Style_Alignment::HORIZONTAL_CENTER_CONTINUOUS

選択範囲内で中央

HORIZONTAL_JUSTIFY

両端揃え

HORIZONTAL_FILL

繰り返し

HORIZONTAL_DISTRIBUTED

均等割り付け(インデント)

 

縦位置の配置を設定する場合は、setVerticalを繋げます。

引数に下記の定数を指定します。

縦位置の配置スタイル名

配置

PHPExcel_Style_Alignment::VERTICAL_BOTTOM

下詰め

PHPExcel_Style_Alignment::VERTICAL_TOP

上詰め

PHPExcel_Style_Alignment::VERTICAL_CENTER

中央詰め

PHPExcel_Style_Alignment::VERTICAL_JUSTIFY

両端揃え

PHPExcel_Style_Alignment::VERTICAL_DISTRIBUTED

均等割り付け

 

背景色

背景色を設定する場合getFillを使用します。

getFillTypeで背景色の塗り方を指定した後にgetStartColorメソッドのserARGBで色を指定します。

色の指定方法はフォントスタイルのところを参考にしてください。

背景色の塗り方の定数は下記を参照にしてください。

背景色のパターン名

PHPExcel_Style_Fill::FILL_NONE

上から順にパターンに対応

fill

PHPExcel_Style_Fill::FILL_SOLID

PHPExcel_Style_Fill::FILL_GRADIENT_LINEAR

PHPExcel_Style_Fill::FILL_GRADIENT_PATH

PHPExcel_Style_Fill::FILL_PATTERN_DARKDOWN

PHPExcel_Style_Fill::FILL_PATTERN_DARKGRAY

PHPExcel_Style_Fill::FILL_PATTERN_DARKGRID

PHPExcel_Style_Fill::FILL_PATTERN_DARKHORIZONTAL

PHPExcel_Style_Fill::FILL_PATTERN_DARKTRELLIS

PHPExcel_Style_Fill::FILL_PATTERN_DARKUP

PHPExcel_Style_Fill::FILL_PATTERN_DARKVERTICAL

PHPExcel_Style_Fill::FILL_PATTERN_GRAY0625

PHPExcel_Style_Fill::FILL_PATTERN_GRAY125

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTDOWN

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRAY

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTGRID

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTHORIZONTAL

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTTRELLIS

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTUP

PHPExcel_Style_Fill::FILL_PATTERN_LIGHTVERTICAL

PHPExcel_Style_Fill::FILL_PATTERN_MEDIUMGRAY

 

セルの幅・高さ

 

自動改行

 

最後に

ドキュメントやファイルを直接見てみたり、Google先生に確認しながら今回PHPExcelを使用しましたが、オートフィルタやリッチテキスト、計算式、エクセルファイル以外の出力、ワークシートの初期設定などなど網羅できていない部分が沢山あります。

今後徐々に追記出来たらと思います。

参考になれば幸いです。

ではでは。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

^
top