Как удалить возврат каретки из строки при вставке содержимого в файл Excel

StackOverflow https://stackoverflow.com/questions/1612808

  •  06-07-2019
  •  | 
  •  

Вопрос

У меня проблема при вставке моего содержимого (или текста), сгенерированного кодом 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, я получил квадратную рамку. Как я могу удалить поля с несколькими строками в моей ячейке ?

Это было полезно?

Решение

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

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

Другие советы

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

Если это поможет, я запустил эту строку кода (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. Проверьте, отформатированы ли ячейки как текст.

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

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

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

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

String s1 = "this\r\nis a test";
String s2 = s1.replaceAll("(\\r|\\n)", "");
System.out.println(s2);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top