TSV → Markdown表 変換メモ
目的
ExcelからコピーしたTSV形式の表を、クリップボード内でMarkdownの表記法(|
区切り)に変換(要VSCode)
- 全角文字にも対応
- 列ごとの寄せ方向(左寄せ・中央寄せ・右寄せ)指定可能
準備
Node.js スクリプト
format_tsv_markdown.js
を作成:
const clipboardy = require("clipboardy"); // 列の寄せ方向を指定("left" / "center" / "right") const alignments = ["center", "left", "right", "right"]; // 列数に合わせて調整 // 文字の表示幅(全角2、半角1) function displayWidth(str) { return str.split("").reduce((sum, ch) => sum + (ch.charCodeAt(0) > 255 ? 2 : 1), 0); } // 指定幅で文字列を整形 function pad(str, width, align) { const w = displayWidth(str); const space = width - w; if (align === "right") return " ".repeat(space) + str; if (align === "center") { const left = Math.floor(space / 2); const right = space - left; return " ".repeat(left) + str + " ".repeat(right); } return str + " ".repeat(space); // left } // TSV取得 let raw = clipboardy.readSync().replace(/\r\n/g, "\n"); let lines = raw.trim().split("\n").map(line => line.split("\t")); // 最大列数の確認と列幅計算 let colCount = Math.max(...lines.map(cols => cols.length)); let colWidths = Array(colCount).fill(0); lines.forEach(cols => { cols.forEach((cell, i) => { const w = displayWidth(cell); if (w > colWidths[i]) colWidths[i] = w; }); }); // Markdown表の作成 let out = ""; // ヘッダ行 out += "| " + lines[0].map((cell, i) => pad(cell, colWidths[i], alignments[i] || "left")).join(" | ") + " |\n"; // 区切り行 out += "|" + colWidths.map((w, i) => { const a = alignments[i] || "left"; if (a === "right") return "-".repeat(w + 1) + ":"; if (a === "center") return ":" + "-".repeat(w) + ":"; return "-".repeat(w + 2); // left }).join("|") + "|\n"; // データ行 for (let r = 1; r < lines.length; r++) { const row = lines[r].map((cell, i) => pad(cell, colWidths[i], alignments[i] || "left")); out += "| " + row.join(" | ") + " |\n"; } // 出力 clipboardy.writeSync(out); console.log("✓ Markdown表形式に変換してクリップボードにコピーしました。"); // 安定して動くようになったらこの行削除
package.json の初期化 & clipboardy のインストール
npm init -y npm install clipboardy@2
clipboardyのインストールではうまくいかなかったため、バージョン2を指定してインストール
タスク設定(.vscode/tasks.json)
{ "version": "2.0.0", "tasks": [ { "label": "TSVをMarkdown表に変換", "type": "shell", "command": "node ${workspaceFolder}/format_tsv_markdown.js", "problemMatcher": [], "presentation": { "reveal": "never", "panel": "shared" } } ] }
キー割り当て(keybindings.json)
[ { "key": "ctrl+alt+t", "command": "workbench.action.tasks.runTask", "args": "TSVをMarkdown表に変換" } ]
利用手順
- Excelで表にしたい部分を範囲指定してコピー
- VSCodeのMarkdownファイルを開く
- 変換して貼り付けたい場所でCtrl+Alt+T
を押す
- 自動でクリップボードに整形済みのMarkdown表が入る
- そのままCtrl+V
で貼り付け - プレビューで確認
備考
- 全角・半角の混在に対応
- 寄せ方向の変更は
alignSpec
を編集