CSV格式和EXCEL格式文件的区别

举报
gentle_zhou 发表于 2024/01/21 13:06:59 2024/01/21
【摘要】 CSV文件侧重于存储简单、结构化、规范化的数据(比如日志,配置信息等);而Excel文件则侧重于存储复杂,非结构化,非规范化的数据(比如用户输入信息、调查问卷信息等)。当然,在实际的数据应用中,我们还是需要根据数据的特点和用户需求来决定到底选用哪种格式。

最近团队经常会收到导出各种数据的诉求,比如公司层面工程的数量、产业层面规则的明细数据、部门层面告警的细分数据等,因为量一般都非常大,都会默认以csv格式的文件传递。直到最近收到一些诉求,抱怨到每次拿到CSV文件都还需要额外的格式转换操作,希望我们可以直接提供excel格式的文件。在解释因为数据量大我们默认用CSV格式文件的同时,也想着要找个时间把两个文件格式的区别搞清楚。

本文会分为如下几个部分来展开:CSV和EXCEL文件的定义,两种文件格式的区别,数据量大的场景,两种文件格式的转换。

CSV和EXCEL文件的定义

CSV,全称是Comma-Separated Values,直接翻译就是用逗号分隔开值;那么CSV文件,直译就是用逗号分隔开值的文件,里面每一行都是一条数据记录,每条记录由一个或多个字段组成,字段间用逗号分隔。它是一种只能存储数据(但不能包含格式,公式,宏等)的纯文本文件格式,支持用任何文本编辑器打开和编辑;如果我们用excel打开,逗号会自动分隔到不同的单元格中。

EXCEL,全称是Microsoft Excel,是由微软公司提供的一款电子表格软件。而EXCEL文件是一种二进制文件格式,它用二进制编码来存储数据。不同于CSV文件,EXCEL文件不仅可以存储数据,还可以对数据进行操作,分析,可视化等操作。
p.s.细心的小伙伴会发现,EXCEL文件的后缀一般是XLS,有些也是XLSX。这是因为EXCEL版本的缘故,前者XLS(Excel spreadsheet)是EXCEL97—2003文档格式,而后者则是更新的EXCEL2007/2010及以上版本的专有文档格式。

两种文件格式的区别

本小节会分为如下4个部分进行对比:文件格式与内容、数据操作与功能、内存消耗、存储模式。

文件格式与内容

就像定义小节里介绍的一样,CSV格式是一种纯文本格式,它用逗号分隔开值,每一行代表一条记录,每一列代表着一个字段。因此,CSV文件也被称为平面文件,它只能存储数据,但不包含格式,公式,宏等。它的优点就是简单通用,占用空间小,支持任何文本编辑器打开或编辑。

而EXCEL格式作为一种二进制格式,每个工作表可以包含多个单元格,每个单元格则可以存储数据、格式、公式、宏等信息。EXCEL文件的优点就是功能强大,易于使用,支持对数据进行分析、可视化、链接外部数据源等操作。

数据操作与功能

CSV文件和EXCEL文件在数据操作和功能方面,因为格式不同(纯文本和二进制),天然就有着很大的差异。

CSV文件仅支持对数据进行基本的读写、排序、筛选等操作,可以被被任何编程语言轻松地解析和生成,例如Python,Java,C#等;但不支持对数据进行合并、拆分、置换或查找替换,也不提供对数据进行加密保护、共享或审计等功能。
而excel文件则可以对数据进行复杂的计算、统计、可视化、条件格式等操作,支持对数据进行合并、拆分、置换或查找替换,且提供对数据进行加密保护、共享或审计等功能;但因为是一种复杂的二进制文件,它就需要专门的编程语言库来操纵,例如xlrd,xlwt,openpyxl等。

内存消耗

CSV文件是流式生成的,它不需要一次性加载所有的数据到内存中,因此对内存的消耗比较小,导入导出的速度相对就会比较快。EXCEL文件则不是,它需要一次性将所有的数据加载到内存中,因此对内存的消耗较大,导入导出的速度就会比较慢;特别是Excel文件在数据量过大或格式过多的的时候,很容易出现内存溢出(OOM)的问题。

p.s.想要一定程度上的避免/解决这个问题,可以:1、使用64位版本的Excel,它可以使用更多的内存;2、清理Excel文件,删除不必要的格式等信息;3、优化Excel文件中的公式,避免引用整列或整行,避免使用跨工作簿或可变的函数;4、使用Poi中的SXSSFWorkbook类来导出超大Excel文件,它可以将数据写入临时文件,不占用内存。

存储模式

CSV文件被称为平面文件,它只能存储数据,但不包含格式,公式,宏等信息,因此CSV文件仅支持存储一张表的数据,不支持关系型数据库的概念,如主键,外键,索引等。

EXCEL文件则不仅可以存储数据,还支持对数据进行操作,分析,可视化等操作,它支持存多张表的数据,支持关系型数据库的概念,如主键,外键,索引等。

小节小结

结合以上对比项来看,我们可以得出个初步结论:CSV文件侧重于存储简单、结构化、规范化的数据(比如日志,配置信息等),适合用于数据传输、备份、输入输出、编程等场景。而Excel文件则侧重于存储复杂,非结构化,非规范化的数据(比如用户输入信息、调查问卷信息等),适合用于数据管理、数据操作、分析、计算、操作等场景。当然,在实际的数据应用中,我们还是需要根据数据的特点和用户需求来决定到底选用哪种格式。

数据量大的场景

结合前面的小节小结,我们可以说当数据量非常大的时候,一般推荐用csv格式来存储数据,因为CSV格式有如下优势:

  • csv文件占用空间小,导入导出的速度快,可以节省时间和资源。
  • csv文件可以被任何文本编辑器打开,支持被任何编程语言轻松地解析和生成,可以方便地进行数据处理和分析。
  • csv格式文件是流式生成的,不需要一次性加载所有的数据到内存中,可以避免内存溢出(OOM)的问题。

当然,如果用户诉求就是希望直接对数据进行分析、校验、可视化等操作,就考虑可以使用EXCEL文件。

两种文件格式的转换

csv和excel格式文件是可以互相转换的,可以使用以下方法来进行转换:

  • 如果想把csv文件转换为excel文件,我们可以在excel工具中打开csv文件,然后另存为excel格式。或者,也可以使用一些在线的转换工具,比如QuickTran这个
  • 如果想把excel文件转换为csv文件,我们也可以在excel中打开excel文件,然后另存为csv格式即可。或者,也可以使用一些在线的转换工具,例如这个工具

注意,csv文件和excel文件的数据格式和功能有一些差异,转换的过程中可能会丢失一些信息,例如格式、宏等。因此,最好在初期导出数据的时候,就根据数据特点和用户需求,选择合适的文件格式,保证数据的完整性和准确性。

参考资料

  1. https://en.wikipedia.org/wiki/Comma-separated_values
  2. https://www.zhihu.com/question/606901541
  3. https://en.wikipedia.org/wiki/Microsoft_Excel
  4. https://www.zhihu.com/question/307048815
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。