Как удалить возврат каретки из строки при вставке содержимого в файл Excel - PullRequest
9 голосов
/ 23 октября 2009

У меня проблема при вставке моего содержимого (или текста), сгенерированного кодом Java, в Excel. Проблема заключается в том, что мой Java-код генерирует строку с несколькими строками, то есть с включенными переносами строк (\n). Когда я пытаюсь скопировать этот контент и вставить его в файл Excel, я получаю многострочный текст с символом квадратной рамки. Я узнал, что Windows использует \r\n для разрывов строк, а не просто \n. Я попытался заменить \n на \r\n и вставить сгенерированный текст, но в моем файле Excel появляются те же квадраты. Вот мой пример кода:

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

Я использовал "" , чтобы обернуть текст. Когда я попытался вставить tmpstring в Excel, я получил квадратную рамку. Как я могу удалить ящики с несколькими строками в моей ячейке ?

Ответы [ 5 ]

42 голосов
/ 23 октября 2009

Вы хотите возврат каретки / перевод строки, или нет? Ваш заголовок говорит, что вы этого не делаете, ваш код явно добавляет возврат каретки, когда в строке есть символ новой строки. Если вы хотите избавиться от обоих, используйте 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.

И я подозреваю, что "коробка" - это какой-то другой символ, а не возврат или перевод строки.

0 голосов
/ 17 января 2014

Попробуйте это =)

String s1 = "this\r\nis a test";
String s2 = s1.replaceAll("(\\r|\\n)", "");
System.out.println(s2);
0 голосов
/ 29 августа 2013
class Test {
    public static void main(String args[])
    System.out.print("Hello\rHi");
}

Из-за того, что \ r курсор перемещается в начало текущей строки, поэтому «He» из Hello заменяется на «Hi».

0 голосов
/ 23 октября 2009

Если это поможет, я запустил эту строку кода (C #)

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

, а затем Ctrl-V в Excel и 3 ячейки заполнены A1, получено 1, A2 получено 2 и A3 получено 3. Это означает, что \ n и \ r \ n обрабатываются в соответствии с ожиданиями Excel. Строки Java, содержащие \ n и \ r \ n, также должны работать. Это наводит меня на мысль, что что-то не так с настройками ячеек Excel. Проверьте, отформатированы ли ячейки как текст.

Кроме этого, понятия не имею, извините.

0 голосов
/ 23 октября 2009

Почему бы не скопировать и вставить как обычно, а затем выполнить поиск и замену в Excel?

...