Excel and Html

 通常、WebページはIE(Internet Explorer)やFirefoxなどのブラウザで表示させるのですが、PHPのheader()を使うことでHTMLのページをMicrosoftのOffice Excelで表示させることができます。下記にその内容を明記しておきます。

 PHPユーザーであればExcelファイルを作る場合、「PHPExcel」を使うと思うのですが、先日、知人から面白いWebページを紹介して頂きました。そのページには特別なライブラリ等を使わずにHTMLをExcelで表示させる方法でした。

「ExcelでWebページを表示することができるのか?」
「表示するとしてもどのように表示されるんだ?」

と、頭の中に「?」が多数並んでいます。まぁ、考えてもわからないので、やってみればいいやということで、試してみました。まずは普通のページとして下記のようなWebページを作ってみました。

テスト用に作ったWebページ

テスト用に作ったWebページ

 このページのHTMLは下記の通りです。

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title>ExcelでHTMLを表示する</title>
</head>
<body>
<h1>ExcelでHTMLを表示する</h1>
<p>
テスト文字列です。テスト文字列です。テスト文字列です。テスト文字列です。
</p>
<ul>
    <li>リスト1</li>
    <li>リスト2</li>
    <li>リスト2</li>
</ul>
テスト文字列です。テスト文字列です。テスト文字列です。テスト文字列です。
<p style="color:red;">赤文字です。赤文字です。赤文字です。赤文字です。赤文字です。赤文字です。</p>
テスト文字列です。テスト文字列です。テスト文字列です。テスト文字列です。

<h2>画像の表示テスト</h2>
<img src="http://192.168.11.216/Test-ContentType-excel/flower.jpg" alt="Disc" width="150" height="105">
</body>
</html>

 まぁ、見ての通り別に普通のWebページです。このソースの先頭に

<?php header('Content-Type: application/vnd.ms-excel'); ?>

を付け加えてみます。そして、ファイルの拡張子を「*.php」にしておきます。そして、ブラウザでこのページを開いてみるとFirefoxの場合ですが、下記のようなファイルを何で開くか聞いてきます。

ファイルを何で開くかを聞いてくる

ファイルを何で開くかを聞いてくる

 「プログラムで開く」を見るとちゃんとExcelの項目があるので、Excelで開いてみるとなんと下記のようにちゃんと表示されるじゃないですか!

ExcelでWebページを表示した状態

ExcelでWebページを表示した状態

 これには正直かなりビックリしました!

 じゃあ、HTMLのテーブル形式だったらどのように表示されるでしょうか?Excelは御存知の通り表を得意とするソフトです。HTMLのテーブルも理解して表示するのでしょうか?せっかくなのでセルの結合や画像を入れてみました。そのスクリーンショットは下記のような感じです。

テーブルを組み込んだHTMLページ

テーブルを組み込んだHTMLページ

 このWebページのソースは下記となります。これはこちらのサイトからお借りし、加工させて頂きました。

<!DOCTYPE HTML>
<html lang="ja-JP">
<head>
<meta charset="UTF-8">
<title></title>

<style type="text/css">

/* --- 表全体 --- */
table.example {
margin-bottom: 30px; /* 表の下マージン */
border: 1px #c0c0c0 solid; /* 大枠の境界線 */
border-collapse: collapse;
font-size: 80%;
}

/* --- 表タイトル --- */
table.example caption {
padding-bottom: 5px; /* 表タイトルの下パディング */
}

/* --- セル --- */
table.example th,
table.example td {
/* width: 20%; */ /* セルの幅(セルの幅を均等にする場合) */
padding: 6px 8px; /* セルのパディング(上下、左右) */
border: 1px #c0c0c0 solid; /* セルの境界線 */
}

/* --- 見出しセル --- */
table.example thead th {
background-color: #deefff; /* 見出しセルの背景色 */
text-align: center;
}

/* --- データセル --- */
table.example tbody td {
background-color: #ffffff; /* データセルの背景色 */
}
</style></head>
<body>


<table class="example">

<caption>表のタイトル</caption>

<thead>
<tr>
<th>見出しセル1</th>
<th>見出しセル2</th>
<th>見出しセル3</th>
</tr>
</thead>

<tbody>
<tr>
<td>データセル1-1</td>
<td colspan="2">データセル1-2</td>
</tr>
<tr>
<td>データセル2-1</td>
<td width="150" height="105">
<img src="http://(ドメイン)/flower.jpg" alt="Disc" width="150" height="105">
</td>
<td>データセル2-3</td>
</tr>
<tr>
<td>データセル3-1</td>
<td>データセル3-2</td>
<td>データセル3-3</td>
</tr>
</tbody>

</table>

</body>
</html>

 さて、このソースの先頭にも

<?php header('Content-Type: application/vnd.ms-excel'); ?>

を加えてExcelで表示してみたところ下記のようにきちんとセルに埋め込んで表示されました。

テーブルタグの入ったHTMLをエクセルで表示

テーブルタグの入ったHTMLをエクセルで表示

 これもかなり感激です。ただ、ちょっと注意が必要でこの中には画像を入れました。この時の画像のパスはフルパスにする必要があります。また、セルの大きさと画像の大きさを同じにすることで画像にあったセルサイズになります。

 ExcelでこのようにHTMLを表示させることができるのは本当にびっくりでした。ただ、全ての表示が上手く表示されるわけでは無く、思い通りに表示されない場合もありますので、確認は必要です。あと、文字コードも要注意を!化けばけになりますので。

perl や PHP で Excelファイル(xlsファイル)を簡単に出力する方法 | perl/CGI | 阿部辰也のブログ――人生はひまつぶし。

Excel+PHP Webデータベース開発 Excel 2000~2003・2007対応 (VBA for Professionals)

著者/訳者:西沢 直木

出版社:毎日コミュニケーションズ( 2009-08-27 )

定価:

単行本(ソフトカバー) ( 304 ページ )

ISBN-10 : 483993164X

ISBN-13 : 9784839931643