2009-10-23 12 views
9

Tengo un problema al pegar mis contenidos (o texto) generados por código Java en Excel. El problema es que mi código Java genera una cadena con varias líneas, es decir, con saltos de línea (\n) incluidos. Cuando trato de copiar este contenido y pegarlo en un archivo de Excel, recibo un texto de líneas múltiples con un símbolo de cuadro cuadrado. Llegué a saber que Windows usa \r\n para saltos de línea y no solo \n. Traté de reemplazar mi \n con \r\n y pegar el texto generado, pero obtengo los mismos cuadros cuadrados en mi archivo de Excel. Aquí está mi código de ejemplo:Cómo eliminar el retorno de carro de una cadena mientras pegue contenido en el archivo de Excel

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

He utilizado el "" para envolver el texto. Cuando traté de pegar tmpstring en Excel, obtuve el cuadro cuadrado. ¿Cómo puedo eliminar las cajas con líneas múltiples en mi celda?

+0

Para algo así como "ABC \ n12", se puede conseguir una sola caja al final o después de cada línea? – A9S6

Respuesta

41

¿Desea el retorno de carro/línea nueva, o no? Su título dice que no, su código está agregando explícitamente retornos de carro cuando la cadena tiene una nueva línea. Si desea deshacerse de ambos, utilizar String.replaceAll(), que toma una expresión regular:

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

Este ejemplo busca cualquier aparición de los caracteres, y los borra. Probablemente desee buscar la secuencia de caracteres y reemplazarla por un espacio, pero lo dejo en sus manos: mire el documento para java.util.regex.Pattern.

Y sospecho que la "caja" es algún otro caracter, no una devolución o una nueva línea.

+0

Gracias por su respuesta.cuando prueba el código publicado por usted, también elimina las líneas múltiples en mi texto cuando lo pego en excel que no quiero hacer.y el cuadro devuelve un valor de ascii 10 cuando lo compruebo como un personaje – chaithu

+1

+1 - Una publicación anterior para usted pero una solución útil para mí :) ¡Gracias! –

+0

debe ser '[\ r \ n]' en la línea: 'Cadena s2 = s1.replaceAll ("[\ n \ r]", ""); ' –

0

¿Por qué no copiar y pegar como de costumbre, luego hacer una búsqueda y reemplazar en Excel?

+0

Tengo que copiar un texto programáticamente en el portapapeles y luego pegarlo en Excel. Aquí he mencionado solo un código de muestra. No debería obtener esos cuadros de texto cuando pegue – chaithu

0

Si se trata de alguna ayuda, me encontré con esta línea de código (C#)

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

y luego Ctrl-V en Excel y 3 células se llenó con A1 tiene 1, A2 tiene 2 y A3 dieron 3 Esto significa que \ n y \ r \ n se manejan como espera Excel. Las cadenas Java que contienen \ n y \ r \ n deberían funcionar también. Esto me lleva a creer que algo está pasando con la configuración de la celda de Excel. Compruebe si las celdas están formateadas como texto.

Aparte de eso, ni idea, lo siento.

+0

Gracias por su respuesta – chaithu

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

Debido a r cursor \ mueve al inicio de la línea actual, por lo que "él" de Hola se sustituye por "Hola".

0

probar este =)

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