CSV 查看器让你在不打开表格软件的情况下,把逗号、分号或制表符分隔的文件打开成可编辑的网格。粘贴文本或拖入文件,确认分隔符和引号的解析方式,原地修正数值,对某一列排序,再导出回 CSV 或转成 JSON。解析、编辑和下载都在本地完成,因此适合不应上传的数据集。
加载和解析文件
你可以把原始文本粘贴到输入区,也可以切换到上传标签选择文件,或直接把文件拖到放置区。接受的扩展名是 .csv、.txt 和 .tsv,所选文件完全在浏览器中读取。解析前先选择分隔符——自动、逗号、分号或制表符——并决定第一行是否为表头(默认是)。按解析即可生成表格;表头行成为列标题,也用作 JSON 的键。解析成功后会出现工具栏,可增删行列。
分隔符与引号规则
自动检测会采样前 10 个非空行,统计出现在引号区域之外的分隔符候选。逗号、分号和制表符都会被计分,得分最高者胜出;平局回落到逗号,空输入也默认逗号。随后解析器按 RFC 4180 处理引号:包含分隔符、换行或引号的字段用双引号包裹;引号字段内连续的两个引号解码为一个引号;引号内的换行不会结束该行。这就是为什么一条逻辑记录可以横跨多个物理行,却仍作为一行解析、引号内的文本保持完整。
实操示例:一个带引号的 CSV
看这个文件:
name,note,zip
"Doe, Jane","He said ""hi""",01234
用逗号解析并勾选表头后,得到表头 name、note、zip,以及一行数据,其单元格为 Doe, Jane、He said "hi" 和 01234。内嵌的逗号没有多出一列,成对的双引号折叠成了一个。
把这一行导出回 CSV 时,只对需要加引号的字段加引号,得到 "Doe, Jane","He said ""hi""",01234。改成导出 JSON 则得到一个对象,大致是 [{"name":"Doe, Jane","note":"He said \"hi\"","zip":"01234"}],其中字面引号按 JSON 规则转义。注意 01234 在两种输出里都仍是字符串,从而保留了表格软件可能会丢掉的前导零。
编辑、排序与导出
点击任意单元格,即可用行内文本输入框替换其值。回车或点击别处会保存,按 Escape 取消编辑。工具栏可以在底部添加空行、追加一列名为 Col N 的列、删除最后一行或删除最后一列,并拒绝把列数降到一列以下。列标题就是排序按钮,可在升序、降序和未排序之间循环。只有当整列都是数字时才按数值排序,否则按语言环境的字符串顺序。CSV 导出使用当前生效的分隔符并重新转义字段,JSON 导出则把每行映射为以表头为键的对象,缺失的单元格用空字符串填充。两个下载文件分别命名为 data.csv 和 data.json。
边界情况与导出选择
如果整个文件都挤进一列,说明分隔符猜错了;请手动选择分号或制表符。欧洲的导出文件常用分号,因为逗号在那里是小数点。前导零、超长数字串,以及以 =、+、- 或 @ 开头的值,一旦在 Excel 里打开都有风险:前两者可能被重新格式化,后者是公式注入的载体,而本查看器有意不做净化。混有文本或空白的数字列会按字典序排序,于是 100 排在 20 前面。最后,一个不配对的引号会把它后面的行都吞进一个单元格,这通常说明源文件本身有问题,而不是检测错误。
合适的导出方式取决于使用方。目标是表格软件、数据库导入或另一个 CSV 工具时选 CSV,因为它保留表格形状,且在纯文本编辑器里也能读。目标是代码——API 请求体、配置文件或前端原型——时选 JSON,因为表头行成了属性名,每条记录都能自我描述。关于 JSON 导出一个提醒:由于键由表头提供,重复的表头名会合并成一个属性,通常最后一个值胜出;空表头会变成空字符串键。转换前请让表头唯一且非空。还要记住,CSV 没有表达嵌套数据的标准方式,因此任何含数组或子对象的 JSON 结构都无法在一次扁平 CSV 往返中保留。
查看器的局限
所有内容都放在内存里并渲染为 DOM 节点,因此没有固定行数上限,但也没有流式处理:极宽或极高的文件会拖慢界面。所有单元格都是字符串,没有类型推断、日期解析或计算列。只有单张表,没有多工作表、没有撤销历史、也没有自动保存——刷新页面就会丢失编辑。这个工具面向查看、轻度清理和格式转换,而不是重度分析;当任务需要公式、图表或数据透视表时,请把清理后的导出文件移进真正的表格软件。
相关工具
常见问题
工具如何决定使用哪个分隔符?
自动检测会采样前 10 个非空行,统计引号字段之外出现的逗号、分号和制表符数量,得分最高的胜出。由于逗号先被检查、比较又是严格大于,平局会落在逗号上,空文件也默认用逗号。
字段内部的引号和逗号如何处理?
解析器遵循 RFC 4180 约定。用双引号包起来的字段可以包含分隔符,其中连续的两个双引号表示一个字面引号;引号内的换行会保留为同一个单元格的一部分,而不是开始新的一行。所以 "Doe, Jane" 是一个字段,"He said ""hi""" 会变成 He said "hi"。
为什么本该是数字的列却按文本排序?
只有当该列所有非空值都能解析成数字时才使用数值排序。只要有一个 N/A、前导零或空白单元格,整列就会切换为按语言环境的文本顺序,此时 100 会排在 20 前面。如果需要真正的数值排序,请先清理或转换该列。
导出会保留我的编辑和原来的分隔符吗?
会。CSV 导出会重新转义每个字段——仅当字段包含分隔符、换行或引号时加引号——并用当前使用的分隔符拼接,所以分号文件仍保持分号分隔。JSON 导出以表头为键,每行生成一个对象。两者都包含你在表格里做过的所有原地编辑。
各行数列数不一致时会怎样?
解析出的第一行决定整张表的列数。较短行中的单元格显示为空,较长行中多出来的单元格不会显示也无法编辑。导出按当前数据结构写出,所以超出列数而被隐藏的值不保证能在这个查看器里往返保留。
有文件大小或行数限制吗?
没有强制上限。文件由客户端文件读取器读取,整张表渲染成 DOM,因此实际限制取决于你的设备和浏览器。超大文件会拖慢解析、排序和滚动,而刷新页面会丢弃所有编辑,因为没有做任何持久化。
由 HandyTools Hub 团队审校 · 最后更新