因为vscode本身不运行node.js,需确认终端已启动在node环境且项目有package.json;直接使用浏览器端库(如sheetjs cdn版)无法读取本地文件系统路径,必须用node原生fs或xlsx.readfile方法。

为什么直接用 xlsx 读 Excel 在 VSCode 里会报错?
因为 VSCode 本身不运行 Node.js,你得先确认当前终端(Terminal)已启动在 Node 环境下,且项目根目录有 package.json。常见错误是直接在 VSCode 内置终端执行 node script.js 却没装依赖,或用了浏览器端库(如 SheetJS 的 CDN 版)——它不能读取本地文件系统路径。
- 必须用 Node.js 原生
fs或readFile读取.xlsx文件,不能靠fetch或XMLHttpRequest -
xlsx包的readFile方法只支持 Node 环境,浏览器版要用read+ArrayBuffer - 确保安装的是
xlsx(不是exceljs或sheetjs别名),命令是:npm install xlsx
怎么写一个最小可用的转换脚本?
核心是用 xlsx 解析 Excel,再把每张 sheet 的二维数组转成 Markdown 表格语法。不需要 GUI、不依赖 VSCode 插件,纯 Node 脚本即可跑通。
- 脚本开头加
#!/usr/bin/env node(可选,但能避免 Windows 下双击报错) - 用
const workbook = XLSX.readFile("data.xlsx")读取文件,路径必须是相对或绝对文件系统路径 - 取第一张表:
const sheet = workbook.Sheets[workbook.SheetNames[0]],再用XLSX.utils.sheet_to_json(sheet, { header: 1 })得到原始二维数组 - 手动拼接 Markdown 表格:第一行为表头(用
|分隔),第二行是分隔符(如|---|---|),后续每行用|包裹单元格内容
const XLSX = require('xlsx');
const fs = require('fs');
const workbook = XLSX.readFile('input.xlsx');
const sheet = workbook.Sheets[workbook.SheetNames[0]];
const data = XLSX.utils.sheet_to_json(sheet, { header: 1 });
// 简单转 Markdown 表格(无空值处理、无对齐控制)
const mdRows = data.map(row => `|${row.map(cell => String(cell).replace(/|/g, '\|')).join('|')}|`);
const header = mdRows[0];
const separator = `|${'---|'.repeat(data[0].length)}`;
const mdTable = [header, separator, ...mdRows.slice(1)].join('
');
fs.writeFileSync('output.md', mdTable);
表格内容含换行、竖线、中文时怎么不出乱码?
Excel 单元格里的换行符(
)和竖线(|)会直接破坏 Markdown 表格结构,必须转义;中文本身没问题,但若文件编码不是 UTF-8,readFile 会读成乱码。
诊断并恢复通过 SSH 隧道连接的 OpenClaw 节点。用于解决配对必需错误、隧道冲突、远程端点错误以及 SSH 目标配置错误等问题。
- 用
fs.readFileSync('input.xlsx', 'binary')+XLSX.read(buffer, { type: 'binary' })可规避部分编码问题 - 每个单元格内容先
String(cell),再.replace(/|/g, '\|').replace(/ /g, ' ')(换行建议替换成空格,Markdown 表格不支持单元格内换行) - 如果 Excel 有合并单元格,
sheet_to_json默认会跳过空单元格,导致列错位——此时改用XLSX.utils.sheet_to_json(sheet, { defval: '', blankrows: true })
VSCode 里怎么一键运行并自动打开结果?
不用每次敲命令,配个 tasks.json 就能 Ctrl+Shift+P → “Tasks: Run Task” 触发,甚至加一句 code output.md 自动用 VSCode 打开 Markdown 预览。
- 在项目
.vscode/tasks.json里写 task,command设为node convert.js - 加
"group": "build"方便归类,"isBackground": false确保等脚本结束再下一步 - 最后追加一行
console.log('✅ Done. Open output.md in VSCode.');,人眼确认比自动打开更可靠——因为code命令在非 CLI 启动的 VSCode 实例里可能不可用
真正卡住人的地方往往不是语法,而是 Excel 文件路径写错、合并单元格没处理、或者以为 VSCode 自带 Node —— 它只是个编辑器,背后全靠你自己配好的环境。










