秀丸マクロ: タブ区切りのデータから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;