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