■5462 / inTopicNo.1) |
SYLKファイルの1データ中の改行の取り扱いについて |
□投稿者/ てけてけ (1回)-(2007/07/13(Fri) 16:43:37)
|
分類:[C#]
こんにちは。 現在、CSV/TSV/SYLKファイルをデータセットを介して 相互に変換するプログラムを作成しています。 SYLKファイルの1データ中の改行の取り扱いに ついてご存知でしたら教えて下さい。
【開発環境】 Microsoft Development Environment 2003 Microsoft .NET Framework 1.1
【処理について】 処理は、以下のような流れです。
<前提条件> ・データの行と列の数は一致している ・データの1行目から行データとして扱う(カラム名は設定されない)
<ファイル→DataSet作成> 1. DataSetのDataTable名に変換元のファイル名の拡張子を除いた値を設定 2. DataColumにはデータの個数分、ダミー名を付与 3. DataRowに各行のデータを個数分設定 ※改行は全て(\r\n)として取り扱っている
<DataSet→ファイル作成> 1. DataSetのDataTable名から取り出した値に拡張子を付与してファイル名作成 2. DataRowから各行のデータを取り込みファイルに出力
現在、SLKの1データレコード中に改行コードが含まれていた場合の 取り扱いに悩んでいます。
【問題になっている事】 改行コード(\r\n)が含まれる文字列を格納したDataSetから SLKファイルを作成した際に、データ中の改行コードが データレコードの終端と見なされてしまい、エクセルで開いた際に エラー「レコード 77 を読むことができません。・・」という メッセージがでて、該当行のデータの改行コードを含んだ、 以降の文字がエクセル上欠落してしまう。
【調べた事】 1. エクセル上では、改行コードはChar(10)として扱われている。 2.適当なSLKファイルのある行のセル内のデータに [Alt]+[Enter]で改行コードを入れて、保存し、 バイナリエディタで該当行を見ると、改行コードは 「0x1B :」(16進数の"1B"+" "+":")で表現されている 3.試しに、C#上で「ああああ\x1B :改行後」のようにファイルを作成する際に 改行コード(\r\n)を「0x1B :」に変換してsylkファイルを作成した所、 エクセルは正常に開き、改行を含むデータも欠落せずに表示される。 4.現在はSYLKファイルを作成する際に、改行コードを何も置換等していないので、 行中に改行コードが含まれるデータがあった場合に、エラーが発生してしまう。 5.「0x1B」で調べると、エスケープシーケンスで多数ヒットした為、 ASCII CODEのエスケープシーケンスを使用した制御文字ではないかと推測。 ※但し、エスケープシーケンスの事はよく理解できていません。
【知りたい事】 ・SLKファイル上の改行コードは「0x1B :」という制御文字で表現されるという 推測は正しいのか否か http://hp.vector.co.jp/authors/VA016670/escape_code.html http://support.microsoft.com/default.aspx?scid=kb;ja;410409 http://netghost.narod.ru/gff/graphics/summary/micsylk.htm
上記を足がかりに調べてみましたが、「0x1B :」に関する事は分かりませんでした。 そもそも取っ掛かりとして調べようとしている事が間違っているのでしょうか? これは参考になるよという事でも構いませんので、 情報お持ちでしたら、教えて下さい。よろしくお願いします。
|
|