Excelへのテキスト貼り付けが途中で止まる問題の対策法

Excel

表題のように、Excelへテキストを貼りつけると、貼りつけたテキストが途中で見切れてしまうことがあります。
原因は、貼り付けようとしているテキストにNUL文字(16進数の文字コードでx00)が含まれているからです。
NUL文字が含まれていると、そこで貼りつけが終了してしまいます。
(なお、メモ帳への貼り付け、サクラエディタへの貼り付け等でも同じようにNUL文字の箇所で切れます)

NUL文字をスペース(x20)に置換して問題ないのであれば、予めNUL文字をスペースに置換してからコピーすることで、この問題を解決できます。
詳しい手順は以下の通りです。

1.テキストをファイルに出力する

初めからファイル形式なのであれば問題ないのですが、問題なのはDBのレコード等、ファイル形式になっていない場合です。
DBのレコードであれば、CSV等の形式でエクスポートする必要があります。
エクスポートの方法はRDBMSによって異なるので、別途調べる必要があります。
なお、Oracle SQL DeveloperのようなGUI操作ができるツールを使用しているのであれば、ツール上で探せばエクスポート用の機能が見つかると思います。

2.16進数の置換ができるエディタで置換する

1で出力したファイルを、エディタで開き、NUL文字(x00)をスペース(x20)に置換します。
置換の方法は以下の通りです。

・サクラエディタの場合

 以下のように指定して置換すれば良いです。
  置換前:\x{00}
  置換後:\x{20}

・秀丸の場合

 開いた瞬間に自動的にNUL文字がスペースに置換されます。

・Stirlingの場合

 置換機能で、16進データを選択し、以下の指定をすれば良いです。
  置換前:00
  置換後:20

3.置換後のテキストをコピーし、Excelに張り付ける

 これで途切れずに貼りつけができるはずです。


いかがでしたでしょうか。

プログラムで出力したテキストには、NUL文字が含まれることが少なくありません。
NUL文字はC言語系のプログラムでは終端文字として使われているからか、Excelに貼りつけることができず、このような考慮が必要になります。

躓く人も少なくないと思うので、今回記事にしてみました。
何かの助けになれば幸いです。

コメント

タイトルとURLをコピーしました