めんどうな作業がわずか数秒に!新人デザイナーが 知らないと一生後悔するExcelを使ったHTML生成 | Webロケッツマガジン
僕もこの記事見て最初は「これは Emacserに対する釣りだ。我慢しよう。」と思ったけど、
寝れなかったので書いてみた。
テーブルだけでいいなら、org-modeを使いましょう
- org-mode
Emacs 22から標準添付です。試したのは最新版 7.8なので、古いので使えるか
どうかわかりませんが、基本的な機能であるはずなので、問題ないんじゃないかな
と思っています。
手順
この表をテーブルにします。スプレッドシートからコピペして Emacsに貼り付けます。
org-modeが有効になるように、keion.orgとでも命名したファイルにコピペすると
よいでしょう。コピペしたらタブセパレートで以下のようになるはずです。
このテーブルのもとになるデータをリージョンに設定します。
そして "M-x org-table-convert"と実行して下さい。そしたら以下のような
org-modeでのテーブルに変換してくれます。
"C-c |"に org-table-create-or-convert-from-regionという関数が割当てられて
いるんですが、うまく変換できなかったのでorg-table-convert関数を使いました。
あとは org-modeの各種エクスポート機能が使えます。
以下は org-table-exportを使って HTMLを生成してみました。
<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"> <caption></caption> <colgroup><col class="left" /><col class="left" /><col class="left" /> </colgroup> <tbody> <tr><td class="left">役名</td><td class="left">パート</td><td class="left">声優</td></tr> <tr><td class="left">平沢唯</td><td class="left">ギター</td><td class="left">豊崎愛生</td></tr> <tr><td class="left">秋山澪</td><td class="left">ベース</td><td class="left">日笠陽子</td></tr> <tr><td class="left">田井中律</td><td class="left">ドラムス</td><td class="left">佐藤聡美</td></tr> <tr><td class="left">琴吹紬</td><td class="left">キーボード</td><td class="left">寿美菜子</td></tr> <tr><td class="left">中野梓</td><td class="left">ギター</td><td class="left">竹達彩奈</td></tr> </tbody> </table>
その他 org-exportでヘッダ等を含む HTMLなり, Latexなりにすることもできます。
より細かい設定を行う場合
元ネタの元ネタの場合、class名を指定したりというのがあり、単純な org-modeの
利用ではうまく行きません。置換を駆使するというのもありますが、
Emacs=Editing MACrosということで、行単位の繰り返し処理はマクロを使うのがいいと
思います。
マクロを定義する
以下のように定義します。マクロ定義のときは、なるべく文字単位でなく、単語単位
などの大きなレベルでの移動・処理を行った方がよいです。
- F3を押し、マクロ定義を開始する
- <dt>と入力
- M-fで単語移動
- </dt><dd><span class="address">を入力
- </span>を入力
- C-dでタブを消す
- M-fで単語移動
- </span><span class="telno">を入力
- C-dでタブを消す
- M-fで単語移動
- </span></dd>
- F4でマクロ定義完了
あとは同様の処理を適用する行をリージョン指定し apply-macro-to-region-lines
関数を呼び出すだけです。行の構成が微妙に異なる場合は、キー入力に敏感になる
必要がありますが、Excelからコピペしたものは極めて、規則的に並んでいるので、
少々の間違いで打ち間違えをしても、ちゃんとそれを訂正すれば、どの行にも
期待したとおり結果が適用されるはずです。