WEB制作

2015-07-02(Thu)

Atsuko

WEBページにEXCELを表示する

ホームページにEXCELを直接読み込んで表示したいときってありますよね。
そんなときに便利なのが、PHPライブラリの「PHPEXCEL」です。

EXCELのデータを配列に変換してくれます。

試しに配列の中を見てみると、セルの値だけでなく、背景色やフォントなどの書式データも入っているようです。

使い方も割と簡単で、まずはライブラリをこちらよりダウンロードし、(Classesフォルダのみ)サーバーの任意の場所にアップします。

次に、ライブラリをインクルードしてください。

// ライブラリのインクルード
set_include_path('/Classes');
include 'PHPExcel.php';
include 'PHPExcel/IOFactory.php';

Excelファイルを読み込み、シートを指定します。

// Excelの読み込み
$excel = PHPExcel_IOFactory::load('/sample.xlsx')
// 読み込みたいシートを設定する
$sheet = $excel->setActiveSheetIndex(0);

Excelデータを配列に入れます。(今回は値と背景色のみ)

$sheetData = array();

// 列の最大値を取得
for( $i = 1; $i <= $sheet->getHighestRow(); $i++)
{
    $tmp = array();
    //行の最大値を取得
    //A、B、Cの文字列形式で帰ってくるので数字に変換する
    $max_column=PHPExcel_Cell::columnIndexFromString($sheet->getHighestColumn());
    for( $j = 0; $j < $max_column; $j++)
    {
        //列のインデックスと、行のインデックスからセルの値を取得
	$cellst[] = $sheet->getStyleByColumnAndRow($j,$i)->getFill()->getStartColor()->getargb();
        $tmp[] = $sheet->getCellByColumnAndRow($j,$i)->getValue();
    }
    $sheetData[] = $tmp;
}

↓このExcelデータを元にした場合

excel

配列の中身はこのようになっています。

Array
(
    [0] => Array
        (
            [0] => 
            [1] => 月
            [2] => 火
            [3] => 水
            [4] => 木
            [5] => 金
        )

    [1] => Array
        (
            [0] => 1
            [1] => あ
            [2] => い
            [3] => う
            [4] => え
            [5] => お
        )

    [2] => Array
        (
            [0] => 2
            [1] => か
            [2] => き
            [3] => く
            [4] => け
            [5] => こ
        )

    [3] => Array
        (
            [0] => 3
            [1] => さ
            [2] => し
            [3] => す
            [4] => せ
            [5] => そ
        )

    [4] => Array
        (
            [0] => 
            [1] => 
            [2] => 
            [3] => 
            [4] => 
            [5] => 
        )

)

配列をテーブルに表示するためのコードを記述します。

$data = '<table class="sample">';
$i = 0;
$c = 0;
foreach($sheetData as $table){
	if($table === end($sheetData) ){ break; }
	$data .= '<tr>';
	foreach($table as $td){
		$tdclass = '';
		if(substr($cellst[$c], 2, strlen($cellst[$c])-2) == '000000'){
			$tdcolor = 'FFFFFF';
		} else {
			$tdcolor = substr($cellst[$c], 2, strlen($cellst[$c])-2);
		}
		$data .= '<td style="background:#'.$tdcolor.';">'.$td.'</td>';
		$c++;
	}
	$data .= '</tr>';
	$i++;
}
$data .= '</table>';

echo $data;

すると、このように表示されました。

excel

背景色以外の書式データも反映できるようなので、興味があればやってみてください。ではノシ


このブログを書いた人

Atsuko

実はJavascriptとか会社入るまでやったことなかったことは内緒です。
酉年生まれのせいか、話を聞いても三歩あるけば忘れます。

最近書いた記事

関連する記事