2014年10月9日木曜日

レコード xxx を読むことができません。Excel SYLK

機械的に作出したSYLKファイルを読み込む際に、Excelがエラーを報告する場合が有ります。


「Microsoft Excel」
「レコード 373 を読むことができません。」
「引き続きエラーを表示しますか?」

Cygwin を使い、sylk をレコードごとに行に再分割する方法例:
cat /cygdrive/c/DL/output\ \(15\).slk | tr -d "\r\n" | sed -e "s/;;//g" | sed -e "s/;/\r\n/g" > AllRecord.txt

変換が必要な文字があります:

セミコロン → ";;"
タブ → "\x1B\x20\x39" 
改行 → "\x1B\x20\x3A"

---
エラーが出る例 その 1 【セミコロン編】
ID;DD
C;Y1;X1;K"ABC;DEF"
E

結果:
  • レコード 4 を読むことができません。レコード数は、行数目ではなく、セミコロン( ; )の出現回数で決まるようです。
  • セルの内容は「ABC」となっていて、「;DEF」の部分が無くなります。データが損失しているので、問題有りです。
---
修正した例
ID;DD
C;Y1;X1;K"ABC;;DEF"
E

結果:
  • エラーは表示されません。
  • セルの内容は「ABC;DEF」となっていて、期待していたデータが表示されました。

---
エラーが出る例 その 2 【タブ編】
ID;DD
C;Y1;X1;K"ABC DEF"
E

結果:
  • レコード 4 を読むことができません。レコード数は、行数目ではなく、セミコロン( ; )の出現回数で決まるようです。
  • タブが消えます。"\x1B\x20\x39" で対応できます。


0 件のコメント:

コメントを投稿