御存知の通り、Excelが吐き出すHTMLは「汚い」。Excelでの見栄えをそのまま再現することに注力するあまり、全セルに適当なclass指定、ヘッダに長い埋め込みスタイルとから始まる独自スクリプト多数、全漢字にルビ(ただし非表示)。そのままでは編集も困難、しかしセル数がセル数だけに手動での移し替え作業も困難である*1。
特にリターン/タブを含めた表記になっているので、そのままでは移植できない部分もある。一応半角スペースは\s、 タブは\t、リターンは\r(Macなので改行コードCRで作業している。WinならCR/LFなので\r\nとする必要があるだろう)に置き換えた。
途中改行の削除
検索文字列
([^>])
置換文字列
Excel-HTMLは長い文字列を適当なところで改行する。その結果として、属性を含むタグの置換などの際、不規則に改行などが含まれ置換を困難にしている。ひとまずタグの区切り以外での改行をすべて削除した。
不可視属性の削除
検索文字列
<span[^(style)]*style='display:[^(none)]*none'>.*?
置換文字列
不可視にしている部分は不要なデータと判断、中身ごと削除する。
Table要素以外の削除
検索文字列
(<[^t][^>]*>)+([^<]*)([^t][^>]*>)+
置換文字列
$2
つまり<t以外から始まり</t以外で終わるタグ部分だけを削除、間に挟まれた<以外の文字(即ちタグでない部分)を残す。
スタイル他、余分な属性の削除
検索文字列
((style)|(x:fmla)|(width)|(height))=[^>]*
置換文字列
様々な鬱陶しい属性、中心的には見栄え再現のためのインラインスタイルだが、そうした余分なものを切り落とす。
タグ文字を反映させるためにhttp://katsubemakito.net/cgiperl/scalar/string/html.htmlを参考

0 件のコメント:
コメントを投稿