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) のセルのプロパティを取得する方法を説明します。

  1. セル内背景色 $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();
    となります。

  2. セル内フォント色 $font_cl[]  

    $cellst[] =
    PHPExcel_IOFactory::load($xlsnm) ->
     エクセルファイル読込
    setActiveSheetIndex($shtno) ->
     シ-ト番号設定
      ・・・ ここまでは $sheet で設定
    getStyleByColumnAndRow($j,$i) ->
     セル指定
     ・・・ ここまでは $jlist で設定
    getFont() ->
     セル内フォント書式取得宣言
    getColor() ->
     フォント色宣言
    getargb();
     フォント色取得
    と順に指定していかないとフォント色に行き着きません。
    よって、
    $font_cl[] = $jlist -> getFont() -> getColor() -> getargb();
    となります。

  3. セル内フォント太字 $font_bold[]

    $font_bold[] =
    PHPExcel_IOFactory::load($xlsnm) ->
     エクセルファイル読込
    setActiveSheetIndex($shtno) ->
     シ-ト番号設定
      ・・・ ここまでは $sheet で設定
    getStyleByColumnAndRow($j,$i) ->
     セル指定
     ・・・ ここまでは $jlist で設定
    getFont() ->
     セル内フォント書式取得宣言
    getBold();
     太文字指定取得
    と順に指定していかないと太文字指定に行き着きません。
    よって、
    $font_bold[] = $jlist -> getFont() -> getBold();
    となります。

  4. その他のフォント書式

    その他のフォント書式は
    $font_iroiro[] = $jlist -> getFont()
    -> getName();  //フォント名
    -> getItalic();   //斜字
    -> getUnderline();//下線
    -> getSize();    //フォントサイズ
    -> getStrikethrough();//打消し線
    で取得できるようですが、詳細には確認していません。


ここまででセル内の背景色、文字色、文字太さの書式を取得できました。
このあとセル内の表示文字内容を取得していきます。

長くなりましたのでここで一旦切りたいと思います。


エクセル表示テストファイル作成2 に続く
単純な PHPExcel リ-ダファイル動作確認 に戻る

63PearVillageに戻る