LoginSignup
12
9

More than 5 years have passed since last update.

Excelを使わず.xlsで開けるファイルをHTMLとCSSで作る

Posted at

WEBサーバなど、Excelがインストールされていない環境でExcel形式のファイルを作る場合、
JavaだったらApache POIとか使ったりする。

ここにいろいろなやり方が載っていた・
サーバサイドでExcelブックを生成するいくつかの方法

そこまでちゃんとExcel形式のファイルじゃなくても、
Excelで開けて罫線とか色とか設定できるだけでいいだけとという場合は、
HTML形式で作ってそれを拡張子「.xls」で保存するだけでも表組みが使える。
※ただし、内容と拡張子が一致していないので壊れている。。の警告メッセージは出てしまう。

これが

<html>
<body>
<table border="1" >
<tr>
<th style="color:white;background-color:gray" >項目1</th>
<th>項目2</th>
<th>項目3</th>
</tr>
<td>値1</td>
<td>値2</td>
<td>値3</td>
</tr>
</table>
</body>
</html>

こうなる。

htmlexcel.png

headタグ内にstyleタグを指定しても反映されないので
直接要素にstyleを指定する必要がある。

もう少しちゃんとしたExcelの表が作りたければ
XML Spreadsheetを使うのが簡単。
一定のルールに沿ってxmlをかけばExcelの表などが作れる。複数シートも作れる。
(図形・チャート・VBAは使えない。)
XML Spreadsheet Referenceを見て記載するのは面倒なので、
完成系のexcelテンプレートを作って、「名前を付けて保存」の時に、「XMLスプレッドシート2003」を選んで保存する。この内容を参考にプログラムで動的に生成すると良い。

Excel2000の時代だと「XML Spreadsheet」はなかったんだけれど、
「名前を付けて保存」の時に、「Webページ(.htm;.html)」で保存すると「XML Spreadsheet」に似た形式のhtmlが生成されるので、これを.xlsにリネームしてExcelで開くファイルを作ることができた。

図やグラフが入っている場合は、Excel2000だとVML形式に変換されていたので、VMLを動的に生成して図やグラフ表示とかできていたのだけど
Excel2013だと、画像に変換されてしまっていたのでこの技が使えなかった。

試しに
旧約 『オートシェイプの秘密基地』
ここを参考にvmlのファイルを作成。拡張子を.xlsにして開いてみたところ。

図形.png

ちゃんとVML形式を認識して図形ができた。ということはグラフとかもいけるのでは、と思うんだけど
自力でVML形式を作るのはちょっと辛いので、別の方法でやったほうが良いかも。

12
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
9