« Web clip | メイン | また滞っています;; »

Excelからのhtmlをどうにかする

まったく面白くない話です。普通の方はスルーしてください。

みんごるのWebPageで、Excelで作った表を載せているのですが、Excelでhtml形式でセーブするとすっごいコードを吐き出します。なにかっていうと、全部の漢字の読み(フリガナ?)が勝手にへばりつくのです;;。
IEとかOperaで見ると見えないのですが、どうもなにかのブラウザーだと丸見えらしいのです。
 
たとえば、以下のような感じ。表の中に「所属」と書いておくとこんな感じのhtmlが出てきます。
 
<ruby>所属<span style='display:none'><rt>ショゾク</rt></span></ruby>
 
このrubyタグというのルビ振り用のタグです。ご丁寧にspan styleというので表示されないようにしている模様なのですが、これが環境によっては見えてしまうわけですね。また、見えなくてもIEで範囲指定してコピー&ペーストすると 所属ショゾク となります orz
 
 これが M S ク ォ リ テ ィ !!!
 
つうか、逃げ方がわかりません;;。オプションやらなんやらちょっと見たけど設定なさそうだし、ヘルプを2分見たけどわかりません。もしexcelからhtmlでセーブする時点でこうならない方法を知っている人がいたら教えてください;;
ちなみに、なぜこうなっているのかというのはぐぐって探して理解しました。どうも再変換という機能のためにWordだとかExcelは変換前の文字列を保持しているようなんですね....。それをhtmlにしたあとでもできるように無理くり埋め込んでるようです。もうかんべんしてください。(でもぐぐっても逃げ方はわからんかった)
 
 
.....いや正確に言うと、逃げ方が一つはわかっています。(試行錯誤で私が開発)
 1. まず Excel 5.0/95 形式でセーブする
 2. それを開いて、htmlでセーブする
 3. そうするとOK!
 
以前はこうしていました。しかしながらワークシート中にハイパーリンク(http)を埋め込むようにしてしまったため、こうするとハイパーリンクもすっ飛ぶことになり、泣く泣くとんでもねーhtmlだと思いながらrubyまみれのhtmlを公開したわけです。
 
そうしたところ、

ふりがなみたいのがが見えてリスト見にくいのは仕様?w

やっぱキタ━━(゜∀゜)━━!!

京ぽんのOpera搭載PHSです
画面小さいんで3種類の画面表示モードが選べるのですが携帯モードって奴だとふりがな地獄に…
他のモードだと出ませんが、一番軽いモードなので…
 
あとIEでも画面を範囲指定してNOTEPADへコピペなんかしたときには、もれなくふりがなが…

きょ....京セラのPHS ΣΣ(゜д゜lll)ズガーン!!
そりゃまともに見えるわけが... ι(´Д`υ)アゥアゥアー
 
 
しょうがないのでsedでとっぱらうことにしました。
とりあえず <rt>~任意の文字列~<rt> を消すということで、ひさびさにsed使うので完璧忘れていたのをsedのサイトをちょっとみながら作ったスクリプトは以下。

(rt_del.sed)
s/<rt>.*<\/rt>//g

これをこう実行してさくっとな

prompt> sed -f rt_del.sed <old.html >new.html

 
 
いやぁDOS世代ってことがバレバレですなw
DOSプロンプトなけりゃやってられないですわなw
 
さてさて、とりあえずこれでサイトの修正は終わったのですが、よく考えてみればPHSでアクセスしているという剛の者もいることだし、もうすこしサイズ削減を狙ったほうがよいわけで。
 置換前: <ruby>任意の文字列1<span style='display:none'><rt>任意の文字列2</rt></span></ruby>
 置換後: 任意の文字列1
こういう変換ができるのがsedの強みっすな。
 
とはいえ、さっきのサイトだけではこのへんの書き方は載ってないので、違うサイトを参考に。
このsed教室ってむかしむかーしからあるよなぁ(懐かしい
 
悩みながら書いたスクリプトがこちら。(spanのとこは面倒なのでさぼった書き方w)

(ruby_del.sed)
s/<ruby>\(.*\)<span.*<rt>.*<\/rt><\/span><\/ruby>/\1/g

実行すると、取れたり取れなかったりしている....謎だ.....と思ったら
excelが悪いのかホムペジビルダーが悪いのか(多分前者)、途中で改行はさまってるとこがあるー(怒
そりゃhtml的には改行はいいんだろうけどさ。もうこれで途中改行も考慮するなんて無理! 絶対無理!
しょうがないので <rt>~</rt> までに改行がないことを祈りつつ、rt_del.sedのコードも入れてみることに。

(最終版ruby_del.sed)
s/<ruby>\(.*\)<span.*<rt>.*<\/rt><\/span><\/ruby>/\1/g
s/<rt>.*<\/rt>//g

サイズは以下のようになりました。

くされ状態 397,014 bytes
rt_del.sed適用後 377,487 bytes
ruby_del.sed適用後 329,449 bytes

 
てなわけで。誰も理解できなかったと思いますがそれでいいのだ。ただのメモなのだ。
 
# こういう文章書くときにホムペジビルダー大活躍
#  &lt;ruby&gt;所属&lt;span style='display:none'&gt;&lt;rt&gt;ショゾク&lt;/rt&gt;&lt;/span&gt;&lt;/ruby&gt;
# こんなん手打ちできまへんわw



Ads by ワード

トラックバック

このエントリーのトラックバックURL:
http://www.nnistar.com/cgi/mt/mt-tb.cgi/128

スパムがあまりにも多くて頭に来たのでcgi名を変えました。 nni-tb.cgi に変更して送信ください。
ご面倒をおかけして申し訳ありません(表記を変えるとまた自動で取られる可能性があるのでそのままにしています)。
なお、エントリへのリンクがないトラックバックは自動的にスパムとみなされることがあります。

コメント (8)

某H:

なんでsed使うんですか。
rubyを使って下さい。(ruby要素の処理だけに)

某H:

ああ、書き忘れてました。
再変換のためにrubyが振られちゃうんなら、
FEPの方で再変換機能をoffにすれば良いんじゃないですか?

オサーン:

うっしっし、オツカレリーン
sedってDOS世代なのですかいw
UNIX野郎なのかとオモタ
sed,awkも使ったことありますが、普段はPerlですかねえ。viで簡単な置換はたまにします~

ちなみに以前のリストに比べてサイズ巨大のためメモリエラー出るように…orz
結局京ぽんで閲覧はむつかぴいようでw

オサーン:

茶ン斗@星→矢
益田西守→歌

気づいたのはこの人たちくらいですわ
お尻の一文字が消えてるようでw
sedの置換に巻き込まれたんですかねえ~

オサーン:

またハッケソ
速瀬水→月
これ以上見つけるのはきついのでdiff取ってみてくだされOTL

nni:

ぬはw
ありがとうです。

後ろが消えるのはExcelのクソヤロ(ry のせいでござるw (単に幅広げればいいだけ orz)
とある方の指摘で気づいており、再upしようとしているが時間が取れない状況でござる。
あいやしばし待たれぃ。

>某H
FEPの再変換機能offってそんなことできるのか? (というか再変換なんてしたことない)
ついでに、変換する前じゃなくて標準的な読みがなを勝手に持ってしまうだけのような気もする。面倒なので無検証w

某H:

あり? 再変換機能の無効化ってできませんでしたっけ・・・
・・・あう、できないですね。^^;;

nni:

ういうい
ふたりほどテクニカルに詳しそうな人がいるので、そのうち御題出そうと思うのでよろしくw

コメントを投稿

RSS feed meter for http://www.nnistar.com/