Command Palette

Search for a command to run...

CSV 查看器:在没有电子表格的情况下打开、搜索和排序 CSV 文件

CSV 查看器:在没有电子表格的情况下打开、搜索和排序 CSV 文件

T
Toolz Team
|Jul 19, 2026|19 最小读数

数据工具 合集的一部分

最后一个让我花了一个下午的 CSV 是客户的 40 MB 导出 's WooCommerce 商店。我双击了它,Excel 决定 SKU 列是一个日期,并且 2024-11-3 突然之间,曾经是什么 2024-11-3-除了是n't,是产品代码,excel有帮助地重写了,当我们注意到时,"cleaned"文件已经重新导入,几百个产品有sku,什么都不指。

这就是在电子表格应用程序中打开 CSV 的问题。电子表格不是查看器,它's 一个有意见的编辑器。它强制类型,它从邮政编码和电话号码中剥离前导零,它重新解释任何看起来模糊地像日期的东西,并且在你看过单行之前它就完成了所有这些。有时你只是想 看见 文件 - 检查列名,确认行数,找到打破导入的记录,然后退出。

我建造 Toolz.dev 我不断地阅读其他人的文章's CSV 导出 - Stripe 支付、数据库转储、分析提取、插件迁移文件。所以我构建了 CSV 查看器 要成为无聊、诚实的选项:它解析文件,准确地显示文件中的内容,并且不更改任何内容。没有类型强制,没有自动更正,没有上传。粘贴文本或丢弃文件,它呈现为可以搜索和排序的表。

TL;博士: CSV 查看器解析划定的文本并将其呈现为表,而无需编辑或强制值。 CSV 查看器 自动检测您的文件是否使用逗号、分号、制表符或管道、句柄 RFC 4180 引用字段(单元格内的逗号和换行符、双引号),警告您有关粗糙行和重复标头的信息,并导出到标准化 CSV 或 JSON。一切都在浏览器中运行 - 文件永远不会上传,并且值保留字符串,因此前导零得以保留。

什么是 CSV 文件,真的吗?

CSV代表逗号分隔的值,这个名字负责十年的错误,因为三个单词中有两个不可靠。

这些值并不总是用逗号分隔。使用逗号作为小数分隔符的区域(欧洲大陆的大部分地区)用分号导出,因为 1,50;2,75 是明确的和 1,50,2,75 is not。excel在德国或法国的locale默认是这样做的,分析和数据库导出经常使用选项卡,日志管道经常使用管道,这些任何一个仍然是通俗地讲的"CSV"。

And值并不总是平淡的,一个值包含分隔符的那一刻,格式需要一个转义舱口,而RFC 4180提供了一个:用双引号包裹字段,在那些引号里面,分隔符只是一个字符,一个引号字符本身通过加倍转义逃脱,而一个引号字段可能包含字面上的换行,这意味着单个逻辑记录可以跨越文件中的多个物理行。

最后一点就是天真的解析器死的地方。如果你的代码是 line.split(',')- 我已经写了那行,你也写了 - 那么这个文件就会摧毁它:

id,name,note
1,"Smith, John","He said ""hi""
on the second line"
2,Ada,plain

三列,两条记录。逗号分割解析器看到第二行中的四个字段,对杂散引号感到恐慌,并将缠绕的行视为第三条记录。适当的解析器逐个字符地走字符串字符,跟踪它当前是否在引号内,并准确地生成文件的含义。CSV Viewer 做第二件事。

CSV 查看器的主要功能

自动分隔符检测

Paste一个文件,工具猜测分隔符后再做其他事情,天真的做法是数字符,挑最频繁的,散文马上就失败了 - a notes 充满英语句子的列包含的逗号远多于分号分隔文件的分号。

所以检测分数 一致性 代频率。它取前十条非空线,在引用的部分之外计算每个候选分隔符(逗号、分号、制表符、管道),并奖励每条线上产生相同计数的候选,一个真实的分隔符恰好出现 columns - 1 times per row, every row。散文里面一个逗号不规则出现。一致性获胜,频率只会破坏平局。如果它仍然猜错-它会,在一列的文件上-你可以从下拉覆盖它。

RFC 4180 引用的字段解析

器(parser)是字符级状态机,不是正则表达式,也不是分裂,它跟踪一个布尔值:我们是在一个引用的字段内吗?引号内,分隔符和换行符是普通字符,而且是双倍的 "" emits 单个字面报价,在报价外,一个分隔符结束字段,一个换行符结束记录,CRLF、LF、裸CR行结尾都接受,因为Windows导出、Unix导出、老Mac导出都存在,最后都放在同一个收件箱。

这是向您展示的观众之间的区别 Smith, John 在一个单元格中,一个单元格向您展示 "Smith John" 在两个。

搜索每个列

搜索框过滤具有区分大小写子字符串的行,与行中的每个单元格匹配。它不模糊,它不是查询语言,这是故意的 - 当您正在寻找打破导入的记录时,您有订单 ID 或电子邮件地址,并且您需要包含它的行,立即。

搜索在内存中运行解析的数据,因此浏览器可以保存的任何大小的文件都是即时搜索,并且它通过排序组成:首先过滤,对结果进行排序,导出剩余的内容。

数字感知列排序

单击列标题对其进行排序。这听起来很琐碎,但事实并非如此,因为 CSV 没有类型 - 每个值都以字符串形式到达,字符串排序将 put 100 之前 92024-3-1 之前 2024-11-1

Sort 检查值:如果比较中的每个非空单元格都解析为一个数字(剥离了数千个分隔符),它会进行数值比较。否则它会回落到与数值校对的区域设置感知字符串比较,因此 item2 之前排序过 item10。空单元格总是沉到底部,在两个方向上,因为空白不是一个小值 - 它是一个缺失的值,而将缺失的数据埋在一个下降排序的顶部是你没有注意到它的方式。

数据质量警告

在你进一步讨论之前,有两个结构性问题会被标记。

参差不齐的行。 如果一行比标头有更多或更少的字段,上游出问题:值内部有一个未引号的分隔符,一个截断的导出,一个杂散的换行符。查看器填充短行并截断长行,因此表仍然渲染,然后准确地告诉您有多少行受到影响。该计数是我首先检查的数字,因为万行中有三行粗糙的文件有一个数据错误,即 a COPY into Postgres 将于凌晨 3 点浮出水面。

重复列名。 两列称为 id 会默默地在几乎每个下游消费者中互相覆盖- 熊猫会重命名它们,JSON转换只保留最后一个,SQL导入会出错,查看器在警告横幅中命名它们,这样你就可以在它重要之前修复标头。

CSV 和 JSON 导出

导出面板重新序列化当前屏幕上的任何内容 - 过滤、排序、执行任何操作。CSV 导出在退出途中应用正确的 RFC 4180 报价,这使得它成为规范引用不一致的文件的良好方式。JSON 导出将表转换为由标头行键控的对象数组,这是您在输入脚本或 API 时想要的。

一个深思熟虑的选择: 导出的值保持不变。 "01234" 不成为 1234.满是数字的CSV列可能是一个数量,也可能是一个邮政编码,一个帐号,一个电话号码,或者一个SKU- 而且从数据中无法分辨,强制数字会永久地丢弃前导零,这正是开始这篇文章的确切错误,如果你想要数字,请明确地将它们投在另一边,在那里你知道该列的含义。

它完全在您的浏览器中运行

该文件是用读取的 FileReader API,并在JavaScript中解析。什么都没有上传,没有搜索查询记录,没有数据触及服务器。这不是策略承诺,它是一个架构事实,您可以通过打开DevTools'网络选项卡来验证,同时您使用该工具,或者通过拉动您的Wi-Fi并观看它继续工作。

That matters than it sounds 大多数值得一看的CSV文件都包含一些你不会粘贴到陌生人's网站:客户电子邮件,工资数字,订单历史记录,从生产数据库导出如果你在GDPR,HIPAA或客户NDA下工作,"我粘贴到在线转换器"不是你想大声说的一句话,我在里面写了更多关于那个威胁模型的内容 为什么客户端工具击败了云转换器

如何使用 CSV 查看器

1步:加载文件

两种方式。将 CSV 文本直接粘贴到输入框中 - 适用于日志片段、Slack 消息或您想要眼球的 API 响应。或单击 上传文件 并选择一个 .csv.tsv、或者 .txt file from your machine。该文件在本地读取;上传按钮是一个文件 采摘的,不是上传。

如果您从电子表格粘贴,请注意,大多数电子表格应用程序都会在剪贴板上放置选项卡分隔的文本,而不是逗号。将分隔符设置为 Tab,或者将其留在 Auto 上并让检测处理它。

2步:检查解析设置

3种设置,而且默认值大部分时间都是对的。

分隔符 是默认自动。如果您的文件有一列,或者检测在小样本上猜错,则覆盖它。

第一行是标头 is on。关闭它对于无头文件 - 列成为 Column 1Column 2等等,并且没有行被消耗。

修剪空格 is on, 它从每个单元格中剥离出前后空间, 这通常是你想要的,因为 , after delimiter 在手写的 CSV 中极为常见,如果您的数据有有意义的前导空间,例如被转储到 CSV 的固定宽度字段,请将其关闭。

3步:读表

查看表格 并且您将获得解析的网格加上统计行:总共多少行中有多少行可见,有多少列,使用了哪个分隔符,以及有多少列是完全数字化的。该数字计数是一个快速理智检查 - 如果您期望的数字列未被计数,则其中某些行将保留非数字,并且通常是会破坏您的导入的行。

Search过滤器行。点击一个头排序。两者组成。

4步:导出或继续

JSON复制可见表,下载为CSV,或者下载为JSON,过滤器、排序应用到导出,所以"搜索为 refunded、按日期排序、下载 CSV"恰好为您提供了该子集。

与其他打开 CSV 的方式相比,这如何?

方法 强制您的数据 处理引用的字段 离线工作 在任何地方发送数据
CSV 查看器 (Toolz.dev) 是(RFC 4180) 是的 检查、搜索、理智检查、转换为 JSON
Excel/谷歌表 是的 - 日期、前导零、科学符号 是的 Excel 是的,表号 表格上传到 Google 编辑、公式、图表
A文本编辑器 不--你在脑海里解析它 是的 微小的文件,检查行结尾
csvkit / xsv /DuckDB CLI 是的 是的 巨大的文件、脚本、加入、聚合
熊猫 read_csv 是的,默认情况下(dtype=str 止(阻止它) 是的 是的 分析、改造管道
大多数"在线CSV查看器"网站 不同 通常 是的 - 上传到他们的服务器 没什么你在乎的

诚实的总结:对于几百兆字节以上的文件,请使用 DuckDB 或 xsv-浏览器一次性将整个文件解析到内存中,这是没有办法的,对于任何需要用公式编辑的东西,使用电子表格并接受强制,或者导入为文本。对于介于两者之间的所有内容 - 每日"这个文件中实际上是什么,以及为什么第4,201行打破" - 一个什么都不改变的查看器是正确的工具。

常见用例

调试失败的导入

CSV导入失败与"预期8列,在第4201行"得到9。在查看器中打开文件,检查ragged-row警告,然后搜索你知道在该记录中的值。十次中九次你会在地址或公司名称内找到一个未引用的逗号- Acme, Inc. write而没有引号,现在你知道是修复导出还是预处理文件。

在数据库导出到达任何地方之前对其进行审查

Client's数据离开笔记本电脑之前,你想知道里面有什么,列名,行数,是否 email 列完全填充,是否有重复的ID。stats行和列填充/唯一计数在大约十秒内回答所有这些,而文件永远不会到达服务器。

将 API 或脚本的 CSV 转换为 JSON

您有一个记录电子表格,您需要它们作为 JSON 来对数据库进行种子、馈送 REST 端点或构建固定文件。粘贴、解析、导出 JSON。如果您需要反向跳闸,则 CSV 转 JSONjson to csv 工具处理专用转换,有更多选项,我在 详细介绍了往返问题 JSON 到 CSV 转换指南

检查以一列形式打开的欧洲出口

客户端从德国 Excel 安装发送导出,每行都是一个长字符串。将分隔符设置为 Semicolon,它会按扣成列。这需要四秒钟,值得了解,因为 reflex "文件损坏"是错误的 - 文件很好,您的解析器's 假设不是。

审计分析或广告平台导出

GA4、谷歌广告、Meta导出以CSV形式到达,元数据行位于实际标头上方,关闭"第一行是标头",看形状,你将准确看到真实标头位于哪一行- 然后从粘贴框中删除垃圾行并重新解析。

技术深度潜水:实际上重要的解析规则

RFC 4180是一个描述,而不是任何人强制执行的标准。 2005年发布,用来记录CSV实现已经做了什么,它明确指出,许多不同之处。将其视为理智的基线,而不是作为对您发送的文件的保证。

报价规则。 A字段可能用双引号包裹,内引号、分隔符、CR、LF、双引号(""")是字面上的。出现在未引用字段中间的引号是模糊的 - 只有当引号是该字段的第一个字符时,查看器才会将引用视为重要的,这是大多数真实解析器的行为方式,并且允许值喜欢 6" nails 存活。

线结局。 CRLF是spec所说的,LF是Unix产生的,一个裸露的CR是非常老的Mac软件产生的,也是少数嵌入式系统仍然产生的,解析器接受所有三个,包括一个文件内的混合结尾,因为当文件在两台机器上被编辑时,混合结尾绝对会发生。

炸弹。 Excel 编写的 UTF-8 文件以字节顺序标记开头, EF BB BF。如果你的第一列名称看起来像 id 但与字符串比较 "id" fails,那个隐形的bom骑在它的前面,这是最常见的单"为什么我的头查找失败"CSV处理中的bug。

尾随换行符。 Newline结尾的文件没有额外的空记录- newline终止最后一条记录查看器's跳过-空行选项使这无论哪种方式都不是问题。

类型推断。 There isn't any。CSV 没有类型,文件中的每一个值都是一个字符串,而你从另一边拿出来的任何类型都是你的解析器根据猜测发明的,这不是格式上的缺陷,它是格式's 整个性质- 也是为什么查看器从来不代表你猜测的原因。

常问问题

如何在没有excel的情况下打开csv文件?

将文件上传到 CSV 查看器 or粘贴其内容到输入框中,文件在浏览器中解析,显示为可以搜索排序的表格,没有电子表格软件,没有安装,也没有上传到服务器。

为什么我的 CSV 打开作为一长列?

分隔符不匹配。 在使用逗号作为小数分隔符的语言环境中导出的文件通常在字段之间使用分号,并且制表符分隔的导出使用选项卡。 将分隔符设置从自动切换到分号、制表符或管道,列将正确分割。

查看器是否处理引用字段中的逗号?

Yes。parser 遵循 RFC 4180:用双引号包裹的字段可以包含分隔符、换行符和转义引号,这些引号可以写成连续两个双引号,一个值像 "Smith, John" 呆在一个牢房里,而不是分成两部分。

CSV和TSV有什么区别?

Tsv 导出时,它们使用不同的字段分隔符- CSV 用逗号分隔,TSV 用制表符分隔,TSV 需要较少的引用,因为制表符很少出现在数据值内部,这就是为什么数据库和分析导出器通常更喜欢这两种方式;选择 Tab 作为 TSV 文件的分隔符。

"破烂行"警告是什么意思?

一行比标题行有更多或更少的字段。 它通常表示值内的无引号分隔符、截断的导出或包含杂散换行符的字段。 查看器填充短行并截断长行,以便表仍然呈现,并告诉您有多少行受到影响。

有文件大小限制吗?

实际限制是您的浏览器内存,因为整个文件都是在一次 JavaScript 传递中解析的。 在典型的笔记本电脑上,最多几十兆字节的文件都可以。 对于多千兆字节导出,请使用 CSVKit、DuckDB 或 Pandas 和 chunksize 的流式传输工具。

我可以将 CSV 转换为 JSON 吗?

是的。导出面板将解析的表转换为由标头行键控的 JSON 对象数组,您可以复制或下载。通过设计,值保持字符串状态 - 将它们强制转换为数字将从 ID、ZIP 代码和电话号码中删除前导零。

在这里打开机密的 CSV 安全吗?

是的。 使用 JavaScript 和 FileReader API 完全在浏览器中进行解析。 没有文件、单元格或搜索查询被传输到服务器或记录。 您可以通过在使用该工具时打开浏览器 DevTools Network 选项卡或通过断开 Internet 来验证这一点。

相关工具

进一步阅读: JSON 工具终极指南JSON 到 CSV 转换

Frequently Asked Questions

Upload the file to the CSV Viewer or paste its contents into the input box. The file is parsed in your browser and displayed as a table you can search and sort. No spreadsheet software, no installation, and no upload to a server.

Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!