2009-10-23 4 views
9

Ich habe ein Problem beim Einfügen meiner Inhalte (oder Text) von Java-Code in Excel generiert. Das Problem ist, dass mein Java-Code eine Zeichenfolge mit mehreren Zeilen generiert, d. H. Mit Zeilenumbrüchen (\n) enthalten. Wenn ich versuche, diesen Inhalt zu kopieren und in eine Excel-Datei einzufügen, erhalte ich einen mehrzeiligen Text mit einem quadratischen Kästchen. Ich habe erfahren, dass Windows \r\n für Zeilenumbrüche verwendet und nicht nur \n. Ich habe versucht, meine \n durch \r\n zu ersetzen und den generierten Text einzufügen, aber ich bekomme die gleichen quadratischen Felder in meiner Excel-Datei. Hier ist mein Beispielcode:So entfernen Sie den Wagenrücklauf von Zeichenfolge beim Einfügen von Inhalt in Excel-Datei

 String myString = "a1\nb1"; 
     String tmpString =myString.replace("\n","\r\n"); 
     System.out.println("Original = " +"\""+myString+"\""); 
     System.out.println("Result = " +"\""+tmpString+"\""); 

ich verwendet habe, die „“ den Text zu wickeln. Als ich versuchte, tmpstring in Excel einzufügen, bekam ich die quadratische Box. Wie kann ich die Boxen mit mehrere Zeilen in meiner Zelle entfernen?

+0

Für so etwas wie "ABC \ n12", haben Sie einen einzigen Kasten am Ende bekommen oder nach jeder Zeile? – A9S6

Antwort

41

Möchten Sie den Wagenrücklauf/Zeilenumbruch, oder nicht? Ihr Titel besagt, dass Sie dies nicht tun. Ihr Code fügt explizit Wagenrücklaufzeichen hinzu, wenn der String einen Zeilenumbruch hat. Wenn Sie beide loswerden möchten, verwenden Sie String.replaceAll(), die einen regulären Ausdruck kommt:

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); 
} 

Dieses Beispiel findet alle Vorkommen der Zeichen, und löscht sie. Sie möchten wahrscheinlich nach der Zeichenfolge suchen und sie durch ein Leerzeichen ersetzen, aber das überlasse ich Ihnen: Sehen Sie sich das Dokument für java.util.regex.Pattern an.

Und ich vermute, dass die "Box" ist ein anderes Zeichen, nicht eine Rückkehr oder Zeilenumbruch.

+0

Vielen Dank für Ihre Antwort Code geschrieben von u, es entfernt auch die Multi-Linien in meinem Text, wenn ich es in Excel einfügen, die ich nicht tun will.und die Box gibt einen ASCII-Wert 10 zurück, wenn ich es als Zeichen überprüfen – chaithu

+1

+1 - Ein alter Beitrag für Sie aber eine nützliche Lösung für mich :) Danke! –

+0

sollte '[\ r \ n]' in der Zeile sein: 'String s2 = s1.replaceAll ("[\ n \ r]", ""); ' –

0

Warum kopieren und einfügen wie gewohnt, dann suchen und ersetzen bei Excel?

+0

Ich muss einen Text programmatisch in die Zwischenablage kopieren und dann einfügen, um Excel. Hier habe ich nur einen Beispielcode erwähnt. Ich sollte diese Textfelder nicht erhalten, wenn ich einfügen – chaithu

0

Wenn es keine Hilfe ist, lief ich diese Zeile Code (C#)

Clipboard.SetText("1\n2\r\n3"); 

und dann Strg-V in Excel und 3-Zellen mit A1 gefüllt bekam bekam 1, A2 bekam 2 und A3 bekam 3 Dies bedeutet, dass \ n und \ r \ n wie erwartet von Excel behandelt werden. Java-Strings, die \ n und \ r \ n enthalten, sollten ebenfalls funktionieren. Das führt mich zu der Annahme, dass etwas mit den Excel-Zelleneinstellungen zu tun hat. Überprüfen Sie, ob die Zellen als Text formatiert sind.

Ansonsten keine Ahnung, tut mir leid.

+0

Vielen Dank für Ihre Antwort – chaithu

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

Aufgrund \ r Cursor bewegt sich auf Start der aktuellen Zeile, so „Er“ von Hallo von „Hallo“ ersetzt wird.

0

Try this =)

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