2014/04/09 Category : ツールTIPS CSVファイルにXAML文が入ってしまった時の対処法 WEBサービスからエクスポートしたCSVファイルを普通にExcelで開いた際、XMLにも似た「これ明らかに中身だろ」みたいな記述が挟まっていた経験はないだろうか。 僕の環境ではXAML文が行間に挟まっていて、Excelで表示した際に無駄な空白行があったり、本来記載されていてしかるべきデータがXAML文に呑み込まれて表示されない事態に陥っていた。 因みにExcelの仕様なのだが、データの途中に空白行が入っているとその部分を表の区切りとして認識してしまう。 何が困るかといえば、フィルタなどを使用した場合、表の区切りたる空白行まででフィルタリングが止まってしまうのである。即ち、ひとつの表に対して実行する処理はすべて、その空白行に辿り着いた時点で処理を中断するわけだ。 このままでは統計を取るにも整形をするにも不可能に近いので、シート内にはみ出てしまった中身たるXAML文をしまいしまいする。 以下が対処手順である。 ========================== 用意するもの: ・バイナリエディタ これについては何を使用しても構わないが、文字列のプレビューがあり、検索&置換の出来るものが望ましい。 僕は有名どころのStirling(スターリング)を使用した。 手順: 1.何は無くともバイナリエディタを起動。 2.バイナリエディタで問題のCSVファイルを開く。 3.バイナリエディタのメニューから置換ウィンドウを開く。 4.取り除きたいデータを16進数で入力。(※後述) 5.置換後の文字列を入力するフォームは空白のままで置換実行。 6.CSVファイルを保存してからExcelで開き直す。 ========================== これで恐らく空白行もはみ出ていた中身も表示されない筈だ。 ここでサンシタエンジニア諸君を最も悩ませるのは手順4だろう。 取り除きたいデータが分かっている人は上記手順を素直に実施して構わないが、そもそも何であるのか分からない場合は、はみ出たXAML文の任意の行を追い、末尾に何が記載されているのかをExcelで確認しよう。 <br /> ↑こんなものが無いだろうか。 何処かで見覚えがあるこのスクリプトはこれ自体で改行を表すものである。XHTMLやXAMLなどに用いられる。 Excelではこれを変換できないため、中身がはみ出てしまっているというわけだ。 では改めてバイナリエディタで<br />を探してみよう。 半角英数字・半角記号はASCIIエンコーディングなので、この部分のバイナリデータを見ると、 3C 62 72 20 2F 3E となっている筈だ。 この部分をまずはコピーしよう。上記バイナリの直後に[0A 0D]が重複している場合は、これも含めてコピーすること。 因みに[0A 0D]は改行(CR LF)を表している。[0A 0D]が二回記述されていれば空白行が1行出来上がることは自明である。 次に、置換ウインドウを開く。上記手順では3に当たる部分だ。 手順4で、置換したい文字列を入力するフォームに[3C 62 72 20 2F 3E (0A 0D)]を入力(先程コピーしたものをペーストで可)し、忘れずに16進数指定しておく。 あとは上記手順をそのままなぞればOK。 P.S. XAML文については筆者自身あまり触れたことが無いので、指摘等あればコメントにて承ります。 PR Comment0 Comment Comment Form お名前name タイトルtitle メールアドレスmail address URLurl コメントcomment パスワードpassword