Tenjinテンプレートエンジンで快適Web制作3

IWDD41で発表したTenjinテンプレートエンジンで快適Web制作2の続きエントリーです。

Webサイトの原稿をもらうときに、ワードだったり、エクセルだったりすることがあるかと思いますが(><)、今回はエクセルファイルから直接ページを作ってみます。

まず、エクセルでこんなシートを作ります。シート名は「page1」、ファイル名は「data.xls」にしておきます。これがページの原稿になります。

エクセルで原稿を作る data.xls

RubyのSpreadSheetライブラリを使って、エクセルのデータを直接読み込んでテンプレートの中に展開します。

<?rb
@title='エクセルファイルからページを作る'

require 'rubygems'
require 'spreadsheet'
book  = Spreadsheet.open('data.xls', 'rb')          # エクセルファイルを指定する
sheet = book.worksheet('page1')                     # シート名を指定する

xls_title  = sheet[2,1]                             # ページタイトル(B3)
xls_body   = sheet[3,1].gsub(/\n/, '<br>')          # 本文。改行をbrタグに置換(B4)
xls_alt    = sheet[4,1]                             # 写真の説明(B5)
xls_src    = '/images/' + sheet[5,1]                # 写真のファイル名(B6)
?>

<?rb import 'header.html' ?>
  <div>
    <h1>${xls_title}</h1>
    <p>#{xls_body}</p>
    <img src="${xls_src}" alt="${xls_alt}">
  </div>
<?rb import 'footer.html' ?>

excel.html

こんな感じでexcel.htmlテンプレートを作ります。xls_body変数にはbrタグが入ってくるので、${xls_body}ではなくて#{xls_body}(エスケープ無し)を使っておきます。

http://localhost/excel.html にアクセスすると

<html>
  <head>
    <title>エクセルファイルからページを作る</title>
  </head>
  <body>
  <div>
    <h1>ここがページのH1になる場所</h1>
    <p>ここにページの内容を書く。<br><br>複数行の内容を入れ込んでもOK...</p>
    <img src="/images/apple.jpg" alt="赤く実ったリンゴ">
  </div>
  <div>ここがフッター</div>
  </body>
</html>

という出力が得られると思います。


Trackbacks

Use the following link to trackback from your own site:
http://blog.migiue.jp/trackbacks?article_id=68

Comments

Leave a response

Leave a comment