EmEditorみんなでまとめサイト

表作成マクロ

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集
	data = document.selection.Text.replace(/(\r\n|\r)/g,"\n").split("\n");
	l_num  = data.length;	//行数
	c_num  = 0;
	cl_num = 1;	//データの最大行数(1で固定)
	cc_num = 0;
	l_op   = prompt( "線種を選んで下さい(1:普通 2:外枠だけ太く 3:太く)", "1" )-0;
	for(var i = 0; i < l_num; i++){
		data[i]=data[i].split("\t");
		if(data[i].length>c_num)	c_num=data[i].length;	//最大配列データ数=列数
		for(j in data[i]){
			if(lenB(data[i][j])>cc_num)	cc_num=lenB(data[i][j]);
		}
	}cc_num = Math.round(cc_num/2)*2;	//最大データ長さ
	
	switch(l_op){
		case 3 : l="┏━┳┓┃┃┣━╋┫┗┻┛";break;	//太く
		case 2 : l="┏━┯┓┃│┠─┼┨┗┷┛";break;	//外枠だけ太く
		default: l="┌─┬┐││├─┼┤└┴┘";break;	//普通
	}
	
	p_str = c(0) + rep((rep(c(1),  cc_num/2) + c(2) ), (c_num-1)/2+1) + rep(c(1),  cc_num/2) + c(3) + "\n";	//一番上の部分
	MatrMid = c(6) + rep((rep(c(7),  cc_num/2) + c(8) ), (c_num-1)/2+1) + rep(c(7),  cc_num/2) + c(9) + "\n";	//行の区切り
	
	for(i in data){//データの出力
		MatrInt="";
		for(j=0;j<c_num;j++){
			MatrInt += c(5)+w_spc(data[i][j]);
		}
		MatrInt = (l_op==2) ? c(4)+MatrInt.substring(1,MatrInt.length)+c(4) : MatrInt+c(5);
		p_str+=MatrInt+"\n"+( (i<data.length-1) ? MatrMid : "" );	//最後のデータの時は行の区切りを出力しない
	}
	
	p_str += c(10)+ rep((rep(c(1),  cc_num/2) + c(11)), (c_num-1)/2+1) + rep(c(1),  cc_num/2) + c(12)+ "\n";	//一番下の部分
	
	document.selection.Text = p_str;	//出力
	
	
	
	/***** function *****/
	function c(n){return l.charAt(n);}	//指定した罫線を返す(文字数削減のために搭載)
	function w_spc(str){return str+rep(" ",cc_num-lenB(str));}	//文字の後ろにスペースを詰める(整形のため)
	
	function rep(Chara, N){	//文字列Charaを、N個出力
		var	arr=Math.round(N-0)+1;	//-0はintに変換するため必要
		var strArray = new Array(arr);
		return strArray.join(Chara);
	}
	
	function lenB(str) {	//文字のバイト長を返す
	    var result = str.length;
	    for(var i = result - 1; i--;)
	        if(str.charCodeAt(i) >= 256)
	            result++;
	    return result;
	}

表挿入マクロを元に改造。
選択範囲のデータ(タブ区切り)を表として出力します。
最後に改行が入ってるとundefinedと表示されてしまうのは仕様。
何となくコードが汚いのも仕様。

d_lenが宣言されてません。 byゆー

d_len->l_numに置き換え

v10.0.0で動作しなかったので、EmEditorの公式サイトフォーラムの方に独自に修正したマクロを登録しました。元々の作者様、ありがとうございます。需要があれば幸いです。


マクロ

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

目安箱バナー