csv文件单元格格式,csv格式是什么意思

本文分享自华为云社区《CSV—简单格式下隐藏的那些坑-云社区-华为云》,作者:aKi。前言CSV(Comma-Separated Values),是一种通用的、

本文由华为云社区分享《CSV—简单格式下隐藏的那些坑-云社区-华为云》,作者:aKi。

前言

CSV(逗号分隔值)是一种通用且相对简单的文件格式。文件可以包含任意数量的表格数据记录。每条记录用作字段之间的分隔符。是一个分隔符。

示例:下面是一个包含3 行内容的CSV 文件。

f24c8d079d8a46739e12b73530a5c92e~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=fbCkjqP2uPrQi2kZn%2FtP8mJ%2FoaE%3D

CSV 格式广泛用于在程序之间传输表数据。由于这些程序的格式不兼容,因此CSV 是最好的中间格式之一,并且大多数程序也支持CSV 导入和导出。数据。例如,从程序A 导出CSV 文件并将该文件导入程序B。这个过程虽然看似简单,但也隐藏着很多陷阱。让我们看一下三个常见的陷阱。

坑一:换行和逗号

我们前面提到,CSV 文件中的每条记录都用换行符分隔,并且通常使用逗号作为分隔符。然而,当您实际处理数据时,字段中会出现换行符和逗号。如果程序A没有正确处理相应的数据,则在导入程序B时会生成错误的数据或记录。

示例:在下面的CSV 文件的第二行记录中,第四个字段包含一个逗号和一个换行符。

d73cc0518a6f4db383f10e10e0e00abe~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=J5gii3Zbmsc0pAUVT9yTIOnfSjo%3D

您可以使用Excel 工具查看解析后文件的外观。

f10c6ec4a8fe489f9fad0f59355422df~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=vo%2BZY8FC5gn9vtStSLZljVDd78U%3D

处理数据的正确方法是将包含逗号和换行符的字段括在双引号中。

6f0453a49eb84c6baa71ffd1c3257eda~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=L6IZKItknPji8WRI1Le%2Bo%2B9QYJc%3D

解析出对应的文件后:

aff2bbc5437e4953a4f18b5095ac7e60~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=LOyk4wfozCIcrJE1SJwUcl90Jn0%3D

为了扩展,如果字段本身有双引号,则必须在字段本身的双引号前添加双引号。

例如,在Airplane 之前添加双引号来表示字段本身的数据。

3c5c9605cda8460c8c06455bd4dcd525~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=EQkRuv8ecB%2B0Zyeu8kiQUCwC8ds%3D

当您使用本文中的工具打开该文件时,它看起来像这样:

f4eb5e2bd8c04e95be0cc3e7f90902c6~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=vSZecXX9sRL7uM3RCE2Kf50PnlY%3D

坑二:BOM头

CSV 文件通常以更常见的UTF-8 格式进行编码。此问题很可能是由自动添加BOM 标头引起的。在Windows 上编辑CSV 文件。如果程序B没有正确处理BOM头,就会认为BOM头是字段的一部分,而直接观察CSV文件是不会发现这个错误的。

例如,这里有两个内容完全相同的文件。

8265b99aef0c48e8b55b3192fe1f8ef1~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=vjkRJgv3bkzY9nroJYjLEuRHvYw%3D

如果一个包含BOM 标头而另一个不包含,则二进制表示形式会有所不同。

d68d399f742e4049a3dd1121fbe5af99~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=RalSV%2BQJPTrkwf9bSvul6u5BL1A%3D

包含BOM 标头的文件在文件开头有额外的3 个字节的数据。处理方法也很简单,只需将文件保存为无BOM格式即可。

坑三:CSV注入

CSV注入实际上是一个安全漏洞。当在Excel工具中打开CSV文件时,其字段数据由Excel解析,因此它支持Excel提供的所有动态功能。

让我们看一下下面的例子。

681962289a0541fab48b0b379320f51a~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=ka%2FlRHh3Dj%2F%2BpfKiIY5XLCoQXKY%3D

我将其中一个字段写为=1+1 并在Excel 工具中打开该文件。

953b0f1f32d84d62a09d422d645ff144~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=cfZJoo%2FZYNiq4cwFrGnJpXB7ilk%3D

=1+1解析为2

同样,该漏洞可用于执行任意程序。

caf254e146b64107963155ec5f49dc56~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=v5XVyNs%2BdiYznOYnowAkCQUvICk%3D

在Excel中打开时,出现以下提示:

3b47a088b52e4658a46e833dda21554c~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=bcVllGO30PhhxSNwmys8amfthkE%3D

单击“是”运行计算程序。

059bf34b32344d34bc468a8590873599~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=wcKpdUo7GC%2BC0b8NTFde5WyRAiw%3D

当然,较新版本的Excel 默认情况下禁用了此漏洞。默认情况下,在“文件”-“选项”-“信任中心”的外部内容设置中,未选中“启用动态数据交换服务器启动”。

364e623ea0cd438b9661409395083f4d~noop.image?_iz=58558&from=article.pc_detail&lk3s=953192f4&x-expires=1717737806&x-signature=XxZljBUtUHCxyoWuvQjYNDEP%2FAA%3D

以上是我在处理CSV数据时遇到的陷阱。希望读者遇到类似问题时,能够快速拿出原因和解决方案,不要在坑里停留太久。

点击下方抢先了解华为云新技术~

华为云博客_大数据博客_AI博客_云计算博客_开发者中心-华为云

原创文章,作者:小条,如若转载,请注明出处:https://www.sudun.com/ask/81764.html

Like (0)
小条的头像小条
Previous 2024年5月31日 下午1:23
Next 2024年5月31日

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注