我是靠谱客的博主 传统大米,最近开发中收集的这篇文章主要介绍JAVA导入excel中文逗号消失,java - 我应该如何在CSV文件中转义逗号和语音标记,以便它们在Excel中工作?...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

java - 我应该如何在CSV文件中转义逗号和语音标记,以便它们在Excel中工作?

我正在生成一个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中打开此文件时,我的转义不受尊重。 语音标记显示在工作表上,逗号导致新列。

5个解决方案

199 votes

我们最终找到了答案。

如果列值前面没有空格,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."

......修复了问题。 希望这有助于某人!

centralscru answered 2019-08-01T08:44:50Z

53 votes

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

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

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

如果该值不包含逗号,换行符或双引号,则表示该值字符串值应保持不变。

Yashu answered 2019-08-01T08:45:35Z

2 votes

根据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;

aaguilera answered 2019-08-01T08:45:59Z

0 votes

单引号工作正常,即使没有转义双引号,至少在Excel 2016中:

'text with spaces, and a comma','more text with spaces','spaces and "quoted text" and more spaces','nospaces','NOSPACES1234'

Excel将把它放在5列中(如果在“Text to columns”向导中选择单引号作为“Text qualifier”)

golimar answered 2019-08-01T08:46:30Z

-3 votes

即使在双引号后,我也有这个问题几天了。

用逗号替换了Pipe Delimiter,然后工作正常。

Ramkumar Navaneethakrishnan answered 2019-08-01T08:47:00Z

最后

以上就是传统大米为你收集整理的JAVA导入excel中文逗号消失,java - 我应该如何在CSV文件中转义逗号和语音标记,以便它们在Excel中工作?...的全部内容,希望文章能够帮你解决JAVA导入excel中文逗号消失,java - 我应该如何在CSV文件中转义逗号和语音标记,以便它们在Excel中工作?...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(36)

评论列表共有 0 条评论

立即
投稿
返回
顶部