JAVA导入excel中文逗号消失_我应该如何在CSV文件中转义逗号和语音标记,以便它们在Excel中工作?...

在生成CSV文件时遇到问题,当用户在Excel中打开时,转义的逗号和语音标记未被正确处理。热门回答提供了解决方案,即在值前添加空格或根据特定规则检查并转义字符串。
摘要由CSDN通过智能技术生成

问题

我正在生成一个CSV文件(用逗号而不是制表符分隔)。我的用户很可能通过双击在Excel中打开CSV文件。我的数据可能包含逗号和语音标记,因此我将按以下方式转义。

Reference, Title, Description

1, "My little title", "My description, which may contain ""speech marks"" and commas."

2, "My other little title", "My other description, which may also contain ""speech marks"" and commas."

据我所知,这一直都是这样做的。这是我的boggle:当我在Excel 2010中打开此文件时,我的转义不受尊重。语音标记显示在工作表上,逗号导致新列。

#1 热门回答(192 赞)

我们最终找到了答案。

如果列值前面没有空格,Excel将仅考虑转义逗号和语音标记。所以生成没有这样的空格的文件......

Reference,Title,Description

1,"My little title","My description, which may contain ""speech marks"" and commas."

2,"My other little title","My other description, which may also contain ""speech marks"" and commas."

......解决了问题。希望这有助于某人!

#2 热门回答(52 赞)

如果你认为它是随机的,则以下是规则。可以基于这些规则创建效用函数。

如果值包含逗号,换行符或双引号,则应以双引号括起来返回String值。

值中的任何双引号字符都应使用另一个双引号进行转义。

如果该值不包含逗号,换行符或双引号,则应返回String值不变。

#3 热门回答(2 赞)

根据Yashu的指示,我编写了以下函数(它是PL / SQL代码,但它应该很容易适应任何其他语言)。

FUNCTION field(str IN VARCHAR2) RETURN VARCHAR2 IS

C_NEWLINE CONSTANT CHAR(1) := '

'; -- newline is intentional

v_aux VARCHAR2(32000);

v_has_double_quotes BOOLEAN;

v_has_comma BOOLEAN;

v_has_newline BOOLEAN;

BEGIN

v_has_double_quotes := instr(str, '"') > 0;

v_has_comma := instr(str,',') > 0;

v_has_newline := instr(str, C_NEWLINE) > 0;

IF v_has_double_quotes OR v_has_comma OR v_has_newline THEN

IF v_has_double_quotes THEN

v_aux := replace(str,'"','""');

ELSE

v_aux := str;

END IF;

return '"'||v_aux||'"';

ELSE

return str;

END IF;

END;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值