表格互转

CSV / TSV / HTML 表格三者互转,引号与转义按目标格式规则重算。

首行当表头注入防护(危险前缀补单引号)
输入
输出

这一页在四种表格表示之间做读取与写出:CSV、TSV、Markdown 管道表、HTML <table>。读取端先剥 UTF-8 BOM,再按分隔符嗅探判断源格式:取第一条非空行,在引号之外统计逗号、制表符、分号、竖线各自的出现次数,取最多者,次数并列时按 , > Tab > ; > | 的固定优先级判定(CSV 更常见),一个都没有就判为单列。CSV 与 TSV 的读取是逐字符状态机,严格按 RFC 4180 §2。

有损与超限都会报告出来,不做静默处理。规模上限是 20000 行、400 列,超过就截断并在提示条里说明截断到哪里,这是为了避免超大输入把标签页锁死。Markdown 是四者里信息量最少的表示:它只有列顺序、单元格文本和一行分隔线,能表达每列的左右居中对齐,但表达不了合并单元格、多行内容、单元格内换行以及任何样式,所以 HTML 转 Markdown 时这些都会丢。单元格内容一律原样搬运:这一页不评估公式、不改写文本,所以以 = 开头的字段(例如电子表格里的 =SUM(A1))会按普通字符串进出,是否要在导出给他人时把它当风险处理,由你在下游决定。转换全程在浏览器本地完成,不上传内容也不发起任何请求。

表格互转怎么用

  • 粘贴即转:把 CSV、TSV、Markdown 表或一段 HTML 表格粘进输入框,选择目标格式即可;源格式不确定时按嗅探结果处理,提示条会写出判定用的分隔符与依据。
  • 表头与分隔线:可以声明第一行是否表头。Markdown 需要表头行与分隔线才能成为合法表格,因此无表头的数据转 Markdown 时会补出结构并在说明里点明这一行的来源不是原始数据。
  • 自定义分隔符:CSV 的分隔符可在逗号、制表符、分号、竖线之间显式指定,覆盖嗅探结果;欧陆常用的分号写法与制表符导出的伪 TSV 都在这里处理。
  • CSV 与 TSV 的读取口径:字段可选双引号包裹,含逗号、双引号或换行的字段必须加引号,引号内的双引号写成两个,空格属于字段内容不做 trim,行分隔是 CRLF,且按 ABNF 结尾那个 CRLF 不额外构成一条记录。读取过程会记录几类事实:闭合引号之后还跟着字符的 stray quote 次数、引号段内部包含的换行数量、被跳过的空行数、CRLF 行数、以及「字段带前后空格未被 trim」的条数——这些都会转成提示而不改变数据本身。
  • 写出端与 HTML 读取端:写出端同样按规范来。CSV 输出对需要转义的字段加引号并把内部双引号翻倍;HTML 输出的单元格内容按字符实体转义,因此从 CSV 转过去的正文里出现的 < 不会变成标签。HTML 读取端按 WHATWG 的表格模型处理 td/th,并对齐 colspan 与 rowspan 的取值范围(colspan 1–1000,rowspan 0–65534,其中 0 表示跨到行组末尾),越界的合并属性会按可见结果处理并说明,而不是静默画歪网格。

常见问题

为什么字段里的空格没有被去掉

RFC 4180 §2 第 4 条规定空格与其它字符一样属于字段内容,除非整个字段被引号包裹。若读取端顺手 trim,「Mr. 」和「Mr.」就会在不知情的情况下被合并,导出的数据与原数据也不再逐字节相等。所以这里的做法是保留空格、把「本行有 N 个字段带前后空格」统计出来给你看,需要清理时由你显式决定。

引号里的换行会发生什么

它是合法的:按 §2 第 6 条,字段内换行必须出现在引号段里,读取状态机会把它当作内容而不是行结束,因此一条记录可以跨多行。代价是行级处理工具(grep、wc -l、按 \n 切行的脚本)看到的行数与真实记录数不一致,导出给这类工具时要么把换行替换成空格,要么保持引号并明确告知对方这是带内换行的 CSV。本页会统计引号内换行的出现次数并在提示条里报出。

HTML 转成 Markdown 会丢哪些东西

丢的是 Markdown 语法里没有对应结构的部分:跨列的 colspan、跨行的 rowspan、多行 tbody/thead 分组、单元格内的换行与富文本、以及所有样式与宽度信息。反方向也一样,Markdown 转 HTML 只会得到一个扁平的 table/thead/tbody 网格。需要保留合并单元格请用 HTML 或表格类文档格式作为源,把 Markdown 当作给人读的简化视图,而不是无损的中间表示。

对应功能编号 #141无需安装,手机端同样可用按 Ctrl + K 换工具