为了账号安全,请及时绑定邮箱和手机立即绑定

为Excel生成CSV文件,以及如何在值中包含换行符

为Excel生成CSV文件,以及如何在值中包含换行符

茅侃侃 2019-10-25 15:21:45
我需要为Excel生成一个文件,该文件中的某些值包含多行。那里也有非英语文本,因此文件必须是Unicode。我现在生成的文件如下所示:(在UTF8中,混合了很多行的非英文文本)Header1,Header2,Header3Value1,Value2,"Value3 Line1Value3 Line2"请注意,多行值用双引号引起来,并带有普通的日常换行符。根据我在网上发现的信息,该方法行得通,但至少在不赢得Excel 2007和UTF8文件的情况下,它不能,Excel将第三行视为第二行数据,而不是第一行第二行。这必须在我的客户的计算机上运行,并且我无法控制他们的Excel版本,因此我需要一个可以在Excel 2000及更高版本上使用的解决方案。谢谢编辑:我通过有两个CSV选项“解决了”我的问题,一个用于Excel(Unicode,制表符分隔,字段中没有换行符),另一个用于世界其他地区(UTF8,标准CSV)。不是我一直在寻找的东西,但至少它能起作用(到目前为止)
查看完整描述

3 回答

?
HUH函数

TA贡献1836条经验 获得超4个赞

仅在空格字符是数据的一部分的情况下,才应在字段的开头使用空格字符。Excel不会删除前导空格。您的标题和数据字段中会出现多余的空格。更糟糕的是",应该“保护”第三列中的换行符的那个将被忽略,因为它不在字段的开头。

如果文件中包含非ASCII字符(以UTF-8编码),则文件开头应具有UTF-8 BOM(3个字节,hex EF BB BF)。否则,Excel将根据您的语言环境的默认编码(例如cp1252)而不是utf-8解释数据,并且您的非ASCII字符将被删除。

以下注释适用于Excel 2003、2007和2013;未经Excel 2000测试

如果通过在Windows资源管理器中双击文件名来打开文件,则一切正常。

如果从Excel中打开它,结果会有所不同:

  1. 文件中只有ASCII字符(没有BOM):有效。

  2. 您的文件中包含非ASCII字符(以UTF-8编码),开头是UTF-8 BOM:它识别出您的数据是以UTF-8编码的,但它会忽略csv扩展名并将您放入文本中不幸的是,导入not-a-Wizard会导致出现换行问题。

选项包括:

  1. 训练用户不要从Excel中打开文件:-(

  2. 考虑直接编写XLS文件...在Python / Perl / PHP / .NET / etc中有可用的软件包/库


查看完整回答
反对 回复 2019-10-25
  • 3 回答
  • 0 关注
  • 1594 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信