如何在将内容粘贴到Excel文件时从字符串中删除回车符

9
我在将由Java代码生成的内容(或文本)粘贴到Excel时遇到了问题。问题是我的Java代码生成了一个带有多行的字符串,即包含换行符(\n)。当我尝试复制此内容并将其粘贴到Excel文件中时,我得到了一个带有方框符号的多行文本。我了解到Windows使用\r\n进行换行,而不仅仅是\n。我尝试用\r\n替换我的\n并粘贴生成的文本,但在我的Excel文件中仍然得到相同的方框。下面是我的示例代码:
      String   myString = "a1\nb1";
      String   tmpString =myString.replace("\n","\r\n");
      System.out.println( "Original = " +"\""+myString+"\"");
      System.out.println( "Result   = " +"\""+tmpString+"\"");

我已经使用" "将文本包裹起来。当我尝试在Excel中粘贴tmpstring时,出现了方框。如何去除单元格中的多行方框


对于类似于“ABC\n12”的内容,您会在末尾还是每行后面都得到一个单独的框? - A9S6
5个回答

42

你是想要回车/换行符还是不需要呢?你的标题说你不需要,但你的代码在字符串有换行符时显式地添加了回车符。如果你想同时去掉两者,可以使用String.replaceAll()方法,该方法接受一个正则表达式:

public static void main(String[] argv)
throws Exception
{
    String s1 = "this\r\nis a test";
    String s2 = s1.replaceAll("[\n\r]", "");
    System.out.println(s2);
} 

这个例子会查找任何字符的出现并将其删除。你可能想查找字符序列并用空格替换,但我会把这留给你:请查看java.util.regex.Pattern文档。

我怀疑"box"是其他字符而不是回车或换行符。


感谢您的回复。当我尝试使用您发布的代码时,它也会在我将其粘贴到Excel中时删除我的文本中的多行,这不是我想要的。并且当我将其作为字符检查时,该框返回一个ASCII值10。 - chaithu
1
+1 - 对你来说可能是一篇旧帖子,但对我来说是一个有用的解决方案 :) 谢谢! - My Head Hurts
应该在这一行中使用 [\r\n]String s2 = s1.replaceAll("[\n\r]", ""); - alan-p
@alan-p - 这是一个正则表达式,因此将匹配括号中的任何一个字符,无论顺序如何。 - kdgregory

0

试试这个 =)

String s1 = "this\r\nis a test";
String s2 = s1.replaceAll("(\\r|\\n)", "");
System.out.println(s2);

0
class Test {
    public static void main(String args[])
    System.out.print("Hello\rHi");
}

由于光标移动到当前行的开头,所以“Hello”中的“He”被替换为“Hi”。

0

为什么不像往常一样复制粘贴,然后在 Excel 中进行搜索和替换呢?


我需要通过编程将文本复制到剪贴板,然后粘贴到Excel中。这里我只提供了一个示例代码。当我粘贴时,不应该出现那些文本框。 - chaithu

0
如果有帮助的话,我运行了这行代码(C#)
Clipboard.SetText("1\n2\r\n3");

然后在Excel中按Ctrl-V,3个单元格将填充为A1得到1,A2得到2,A3得到3。这意味着Excel按预期处理\n和\r\n。包含\n和\r\n的Java字符串也应该可以正常工作。这让我相信Excel单元格设置有问题。检查单元格是否格式化为文本。

除此之外,我没有其他想法,抱歉。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接