秀丸マクロ: タブ区切りのデータからHTML tableを作成
タブ区切りのデータから HTML table を作成
選択したタブ区切りのデータからHTML tableを作成するサンプルプログラムです。
次のようなタブ区切りのデータを選択して、マクロを実行すると
head1 head2 head3 aaaa bbbb cccc dddd eeee ffff
↓↓↓↓↓ HML table 形式のデータを作成します。
<table> <tr><th>head1</th><th>head2</th><th>head3</th></tr> <tr><td>aaaa</td><td>bbbb</td><td>cccc</td></tr> <tr><td>dddd</td><td>eeee</td><td>ffff</td></tr> </table>
解説
選択した行の1行目をヘッダーとみなし、th タグで囲っています。 不要なら次の部分を td タグに変更してください。
// 先頭行だけ <th></th>で囲む $str_line = $str_line + "<th>" + $arr_col[#k] + "</th>";
最終的にはクリップボードに設定しています。 もし直接変換したければinsert文で変換することもできます。 そのへんも好きなように変更してください。
// クリップボードに設定 setclipboard $str_all;
秀丸マクロ プログラム
コードは次の通りです。
秀丸マクロ
// タブ区切りのデータからHTML table を作成
// 範囲選択中でない場合、マクロを終了する
if (selecting == 0) endmacro;
// 選択範囲の文字列を取得(範囲選択を維持する)
$str = gettext(seltopx,seltopy,selendx,selendy, 1);
$str_all = "<table>\n";
$str_line = "";
#count = 0; // ヘッダー <th> 用のカウンタ
// 改行で分割
#num_line = split($arr, $str, "\r\n");
// 行のループ ---------------------------
#i = 0;
while(#i < #num_line){
$str_line = "<tr>";
// タブで分割
#num_col = split($arr_col, $arr[#i], "\t");
// 列のループ ---------------------------
#k = 0;
while(#k < #num_col){
if (#count == 0) {
// 先頭行だけ <th></th>で囲む
$str_line = $str_line + "<th>" + $arr_col[#k] + "</th>";
} else {
$str_line = $str_line + "<td>" + $arr_col[#k] + "</td>";
}
#k = #k + 1;
} // end of #k
$str_line = $str_line + "</tr>\n";
$str_all = $str_all + $str_line;
#count = #count + 1;
#i = #i + 1;
} // end of #i
$str_all = $str_all + "</table>";
// クリップボードに設定
setclipboard $str_all;