06-13-2013, 03:52 PM
エクセルからコピーされたデータをClipboard 経由で、グリッドに貼り付けを行う際、
ひとつのセルのなかで改行されている場合に、Curl側でその改行を削除し、ひとつのセルの中のデータとして整形したいと思ったのですが、
うまく判別する方法を考えられませんでした。
エクセルからコピーされたデータとしては、セル内の改行は、LF(ラインフィード)になっているので、
この文字を削除すればよいかと思ったのですが、
Clipboard.get-string で取得した後の文字は、LFは、CR(キャリッジリターン)に変換されているため、
判別する基準として利用できません。
セル内に改行がある場合はダブルコーテーションでくくられるので、
それを判断の基準にしようかと思ったのですが、エスケープ(2重に)されたダブルコーテーションがあった場合や、
改行直前にダウブルコーテーションがあった場合など、
判別が複雑になるため、今のところ、連続した二つのダブルコーテーションはすべて削除してしまう、
という方法に落ち着きました。
WindowsのようにCR とLF を混合しない、Mac や Linux に対応しているための問題なのかもしれませんが、
エクセルからのコピーは、現場では多用されるので、できれば対応してもらいたいです。
ひとつのセルのなかで改行されている場合に、Curl側でその改行を削除し、ひとつのセルの中のデータとして整形したいと思ったのですが、
うまく判別する方法を考えられませんでした。
エクセルからコピーされたデータとしては、セル内の改行は、LF(ラインフィード)になっているので、
この文字を削除すればよいかと思ったのですが、
Clipboard.get-string で取得した後の文字は、LFは、CR(キャリッジリターン)に変換されているため、
判別する基準として利用できません。
セル内に改行がある場合はダブルコーテーションでくくられるので、
それを判断の基準にしようかと思ったのですが、エスケープ(2重に)されたダブルコーテーションがあった場合や、
改行直前にダウブルコーテーションがあった場合など、
判別が複雑になるため、今のところ、連続した二つのダブルコーテーションはすべて削除してしまう、
という方法に落ち着きました。
WindowsのようにCR とLF を混合しない、Mac や Linux に対応しているための問題なのかもしれませんが、
エクセルからのコピーは、現場では多用されるので、できれば対応してもらいたいです。