Excel からのコピペ = タブ区切り文字列
要はタブ区切りの複数行ある文字列を、
Markdown Tableに変換したいというお話です。
正規表現でやってもいいですが、
エディタが限られるのでWebサービスが理想です。
実はツールが色々あります。
Markdown Tables Generator
HTMLテーブルにも出せるので高機能。
ただ、高機能故に3クリックくらい必要です。
CopyToMarkdownAddIn
.NET Framework 4.5.2を使用されているようなので、
おそらくWindows限定ですが、
Markdown TableをExcelにコピペする操作も行えるのが素晴らしいです。
Copy Table in Excel and Paste as a Markdown Table
コピペした瞬間にもう変換済みのMarkdown Tableが表示されてるシンプルさがいいですね。
Excel to Markdown table
こちらはVisual Studio CodeのExtensionですが、
私の環境では実行すると command 'extension.excelToMarkdown' not found
となって実行できずでした。
インストールは完了しているのになー。。。
簡単そうだったので自前で作ってみました。
Convert tab delimited string to MarkDown table
結構簡単でした。
CodePenで実装したので、
お好みでForkしてカスタマイズしちゃってください。
Code
必要な部分だけ抜き出しで書いてます。
HTML(pug)
textarea#request
span ↓
textarea#response
CSS(sass)
別になんでもいいので割愛
JavaScript(Babel)
$(document).ready(()=>{
const INPUT = $('#request');
const TARGET = $('#response');
INPUT.on('keydown', (e)=>{
let el, current, end, start, val;
if (e.keyCode === 9) {
if (e.preventDefault) {
e.preventDefault();
}
el = e.target;
current = el.selectionStart;
start = el.value.substr( 0, current );
end = el.value.substr( current, el.value.length );
el.value = start + "\t" + end;
el.selectionEnd = current + 1;
return false;
}
});
INPUT.on('keyup', (e)=>{
TARGET.val('');
let str = INPUT.val();
const FIRST = str.split(/[\r\n]+/)[0];
const COUNT = FIRST.split(/\t/).length - 1;
let arr = [];
if(str.length > 0){
str = str.replace(/\t/g, ' | ');
str = str.replace(/([\r\n]+)/g, ' |$1');
str = str.replace(/(^)/gm, '| $1');
str = str + ' |';
arr = str.split(/[\r\n]+/g);
for(let [i,v] of arr.entries()){
if(i === 0){
str = v + "\n";
} else if(i === 1){
str = str + generateHeader(COUNT) + v + "\n";
} else {
str = str + v + "\n";
}
}
}
TARGET.val(str);
});
const generateHeader = (cnt) => {
let str = '';
str = str + '| ---';
for(let i=0; i<cnt; i++){
str = str + ' | ---';
}
str = str + ' |\n';
return str;
}
});
結構な雑コードですみません(>人<)