Как удалить возврат каретки из строки при вставке содержимого в файл Excel
-
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);