web-dev-qa-db-ja.com

コンテンツをExcelファイルに貼り付けるときに文字列からキャリッジリターンを削除する方法

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に貼り付けようとすると、四角いボックスが表示されます。 セル内の複数行のボックスを削除するにはどうすればよいですか?

9
chaithu

キャリッジリターン/改行が必要ですか、それともそうではありませんか?あなたのタイトルはあなたがそうしないと言っています、あなたのコードは文字列が改行を持っているとき明示的にキャリッジリターンを追加しています。両方を削除したい場合は、正規表現を使用する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のドキュメントを見てください。

そして、「ボックス」は他の文字であり、改行や改行ではないと思います。

42
kdgregory

いつものようにコピー&ペーストしてから、Excelで検索して置き換えてみませんか?

0
o.k.w

それが助けになるなら、私はこのコード行を実行しました(C#)

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

次に、ExcelでCtrl-Vを押すと、3つのセルがA1で1になり、A2で2になり、A3で3になります。これは、\ nと\ r\nがExcelで期待どおりに処理されることを意味します。 Java\nと\ r\nを含む文字列も機能するはずです。これにより、Excelのセル設定に問題があると思われます。セルがテキストとしてフォーマットされているかどうかを確認してください。

それ以外は、わかりません、ごめんなさい。

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

\ rにより、カーソルが現在の行の先頭に移動するため、Helloの「He」は「Hi」に置き換えられます。

0
simon

これを試してください=)

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