Come rimuovere il ritorno a capo dalla stringa mentre si incolla il contenuto nel file Excel
-
06-07-2019 - |
Domanda
Ho un problema durante l'incollaggio dei miei contenuti (o testo) generati dal codice Java in Excel.
Il problema è che il mio codice Java genera una stringa con più righe, ovvero con interruzioni di riga ( \ n
) incluse. Quando provo a copiare questo contenuto e incollarlo in un file Excel, ricevo un testo su più righe con un simbolo di casella quadrata. Sono venuto a sapere che Windows utilizza \ r \ n
per le interruzioni di riga e non solo \ n
. Ho provato a sostituire il mio \ n
con \ r \ n
e incollare il testo generato, ma sto ottenendo le stesse caselle quadrate nel mio file Excel. Ecco il mio codice di esempio:
String myString = "a1\nb1";
String tmpString =myString.replace("\n","\r\n");
System.out.println( "Original = " +"\""+myString+"\"");
System.out.println( "Result = " +"\""+tmpString+"\"");
Ho usato il " " per avvolgere il testo. Quando ho provato a incollare tmpstring in Excel, ho ottenuto la scatola quadrata. Come posso rimuovere le caselle con più righe nella mia cella ?
Soluzione
Vuoi il ritorno a capo / newline o no? Il tuo titolo dice che non lo fai, il tuo codice aggiunge esplicitamente i ritorni a capo quando la stringa ha una nuova riga. Se vuoi sbarazzarti di entrambi, usa String.replaceAll (), che accetta una regex:
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);
}
In questo esempio viene trovata qualsiasi occorrenza dei personaggi e li elimina. Probabilmente vuoi cercare la sequenza di caratteri e sostituirla con uno spazio, ma lo lascerò a te: guarda il documento per java.util.regex.Pattern
.
E sospetto che la casella " " è un altro personaggio, non un ritorno o una nuova riga.
Altri suggerimenti
Perché non copiare e incollare come al solito, quindi fare una ricerca e sostituire in Excel?
Se è di aiuto, ho eseguito questa riga di codice (C #)
Clipboard.SetText("1\n2\r\n3");
e poi Ctrl-V in Excel e 3 celle sono state riempite con A1 ottenuto 1, A2 ottenuto 2 e A3 ottenuto 3. Ciò significa che \ n e \ r \ n sono gestiti come previsto da Excel. Anche le stringhe Java contenenti \ n e \ r \ n dovrebbero funzionare. Questo mi porta a credere che qualcosa sia successo con le impostazioni della cella di Excel. Controlla se le celle sono formattate come testo.
A parte questo, non ho idea, scusa.
class Test {
public static void main(String args[])
System.out.print("Hello\rHi");
}
A causa del cursore r si sposta all'inizio della riga corrente, quindi "He" di Hello è sostituito da " Hi " ;.
Prova questo =)
String s1 = "this\r\nis a test";
String s2 = s1.replaceAll("(\\r|\\n)", "");
System.out.println(s2);