PHPExcel エクセル表示
エクセル表示テストファイル作成
それでは背景色、文字色、文字太さの書式デ-タも読み込み、エクセルファイルの内容を
なるべく忠実に、ほぼ忠実に表示する、
エクセル表示テストファイル excel_disp_t.php
を作成したいと思います。
作成ファイル内容は、
63Pear Village に戻り
左サイドナビ「PHPExcel エクセル表示」の中の
PHPExcel エクセル表示テスト PHP ファイル
から見てください。
定数指定から読込みシ-ト設定まで
便宜上、5個の定数を設定します。
それぞれの下段に例を示します。
読込エクセルファイル名
$xlsnm = 'test-2.xlsx';
表示シ-ト番号
$shtno = 0;
表示しない行の中抜き数
$toba = 0;
最大行設定(0 のときは自動設定)
$maxrow = 0;
最大列設定(0 のときは自動設定)
$max_column = 0;
数値小数点以下表示数
$shousu = 2;
エクセル内容保存配列
$sheetData = array( );
これらの定数は後で使用します。
そして、
単純な PHPExcel リ-ダファイル作成
でも説明した通り、Composer のなかの PHPExcel パッケ-ジのなかの PHPExcel.php ファイルを読込み
require_once 'phpoffice/phpexcel/Classes/PHPExcel.php'
次ぎに、エクセルファイル test-2.xlsx を読み込みます。
$excel = PHPExcel_IOFactory::load($xlsnm);
シート設定と行の最大値取得
読み込みたいシートを設定し、行と列の最大値を取得します。
行の最大値 $maxrow を読み取る書式は、
$maxrow =
$excel ->
エクセル読込
setActiveSheetIndex($shtno) ->
シ-ト設定 ->
getHighestRow();
行の最大値取得
となります。
ここでは、最初は
$maxrow = 0;
としていますので
$sheet = $excel -> setActiveSheetIndex($shtno);
として
if 文を使って、$maxrow = 0 ときのみ行の最大値を自動取得することにしました。
if($maxrow == 0){
$maxrow = $sheet -> getHighestRow();
}
その他の時は手動で行の最大値 $maxrow を設定します。
列の最大値取得
これが面倒くさい。
カラムラベルをカラム番号に変換する必要があるのです。
列の最大値 $max_column は
$max_column = $sheet -> getHighestColumn()
でよいはずなのですが、取得した $max_column はカラムラベルなのです。
だから、'A' -> 1 のように変換する必要があります。
そのおまじないは、
PHPExcel_Cell::columnIndexFromString() メソッド
よって正解は、
$max_column = PHPExcel_Cell::columnIndexFromString($sheet -> getHighestColumn());
となります。
if 文を使って、$max_column = 0 ときのみ列の最大値を自動取得することにしました。
if($max_column == 0){
$max_column = PHPExcel_Cell::columnIndexFromString($sheet -> getHighestColumn());
}
その他の時は手動で列の最大値 $max_column を設定します。
行列のインデックスからセルのプロパティを取得
行列のインデックス ($j,$i) のセルのプロパティを取得する方法を説明します。
- セル内背景色 $cellst[]
$cellst[] =
PHPExcel_IOFactory::load($xlsnm) ->
エクセルファイル読込
setActiveSheetIndex($shtno) ->
シ-ト番号設定
・・・ ここまでは $sheet で設定
getStyleByColumnAndRow($j,$i) ->
セル指定
getFill() ->
セル書式取得宣言
getStartColor() ->
背景色宣言
getargb();
背景色取得
と順に指定していかないと背景色に行き着きません。
ここで、
$jlist = $sheet-> getStyleByColumnAndRow($j,$i);
とすると
$cellst[] = $jlist -> getFill() -> getStartColor() -> getargb();
となります。 - セル内フォント色 $font_cl[]
$cellst[] =
PHPExcel_IOFactory::load($xlsnm) ->
エクセルファイル読込
setActiveSheetIndex($shtno) ->
シ-ト番号設定
・・・ ここまでは $sheet で設定
getStyleByColumnAndRow($j,$i) ->
セル指定
・・・ ここまでは $jlist で設定
getFont() ->
セル内フォント書式取得宣言
getColor() ->
フォント色宣言
getargb();
フォント色取得
と順に指定していかないとフォント色に行き着きません。
よって、
$font_cl[] = $jlist -> getFont() -> getColor() -> getargb();
となります。 - セル内フォント太字 $font_bold[]
$font_bold[] =
PHPExcel_IOFactory::load($xlsnm) ->
エクセルファイル読込
setActiveSheetIndex($shtno) ->
シ-ト番号設定
・・・ ここまでは $sheet で設定
getStyleByColumnAndRow($j,$i) ->
セル指定
・・・ ここまでは $jlist で設定
getFont() ->
セル内フォント書式取得宣言
getBold();
太文字指定取得
と順に指定していかないと太文字指定に行き着きません。
よって、
$font_bold[] = $jlist -> getFont() -> getBold();
となります。 - その他のフォント書式
その他のフォント書式は
$font_iroiro[] = $jlist -> getFont()
-> getName(); //フォント名
-> getItalic(); //斜字
-> getUnderline();//下線
-> getSize(); //フォントサイズ
-> getStrikethrough();//打消し線
で取得できるようですが、詳細には確認していません。
ここまででセル内の背景色、文字色、文字太さの書式を取得できました。
このあとセル内の表示文字内容を取得していきます。
長くなりましたのでここで一旦切りたいと思います。
エクセル表示テストファイル作成2 に続く
単純な PHPExcel リ-ダファイル動作確認 に戻る