
いつもお世話になっております。
現在VB6.0にて、CSVファイルを読み込む処理をしています。
・ファイル読み込みにて1行ファイルを読み込む。
・Split関数で「,」で区切って項目ごとに配列に保持する。
というロジックで作成しているのですが、
項目内に改行コードが存在する場合にうまく読み込めません。
(1行ずつ読んでるので当然ですが…)
項目内のコードをLF、実際の行の改行をCR+LFで区別すると読み込む
のは分かるのですが、項目内の改行コードがCR+LFの場合でも、
正しく読み込みたいです。
以上です。よろしくお願い致します。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
意味的に、列に相当する、数字は一定ではないのですか
フィールド数 5(カンマ4つ)ーー第1レコード(Line Inputで読んで)
3(カンマ2つ)ーー第2レコード
2(カンマ1ツ)ーー第3レコード
・・
のようであればSplitしたUbound数を足して行き、5になったら
一般通常でのケースの、次行の扱いをするロジックで解決しませんか。
それで不可能なら、この質問のケースの、たまたまの好都合条件を捉えて、意味的に先頭フィールドを探すとかしかなくなる。
他フィールドにはない。例えば完成形のデータを考えると、先頭に7桁の定桁数字が来るとか。
コンピュタープログラム作成と言うのは、特賞を捉えて処理を進める
学だとお思います。
No.3
- 回答日時:
#1 Wizard_Zeroです。
ダブルクォートでくくられているのであれば、
・ダブルクォートで終わる行はそのままSplit
・それ以外なら次の行も連結
でいけると思います。
ただ、データ内にカンマがあればこれまた厄介で、地道にダブルクォートを考慮しながら切り分ける必要があります。
(これも、行の前後のダブルクォート取り除いて "," で分解すればいいんですけどね。", " のように間にスペースがあったりするとまた厄介という・・・)
No.1
- 回答日時:
CSVファイルの1レコードあたりの項目数が固定という前提で、Splitで分解したときに項目数が足りない時は次の行と連結してSplitする。
という方法を思いついたのですが、レコードの最後の項目が改行されていたらうまくいきませんね・・・。
この場合、次の行には前の行における最後の項目の残りだけが記録されるので、カンマのない行は前の列と連結としたいところですが、そうなると今度は、最初の項目で改行されていたら・・・というジレンマに陥ります。
(最初と最後の項目が絶対に改行されないのであればこのあたりを考慮する必要はありませんが…)
どちらにしても、レコードに改行が含まれていることを明確に知る手段が必要になるでしょう。
・レコード内の改行コードはLFに限定する
・改行コードのあるレコードはダブルクォーテーションでくくる
などのルールがあれば、それにあわせて読み込みも出来るようになります。
もしこのようなことが出来ないのであれば、100%の精度で読み込むことはできないため、読み込んだあとにレコードを手動で変更できる手段を提供する必要があると思います。
この回答への補足
ご回答ありがとうございます。
記述漏れでしたが、
・改行コードのあるレコードはダブルクォーテーションでくくる
は既に実現されています。
説明不足で申し訳ありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++で空Enterの入力を判...
-
VBAのコマンドボタンの文字列の...
-
VBAでCSVをExcelに取り込む時に...
-
vbsで2文字以上の空白を改行に...
-
jsp 改行コードで改行させて表...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
JavaDoc コメントの改行について
-
C言語の標準入力で改行しない方法
-
\\nと\\rの違い
-
vb.netでのリッチテキストボッ...
-
Excel VBAからBeckyを起動して...
-
改行について
-
【VBA】エクセルで最後の不要な...
-
POSTで改行コードを受け渡すには
-
FORTRANで作成したテキストファ...
-
バーコード入力と手入力の判断...
-
COBOLの改行
-
awkで改行を除いて文字列を抜き...
-
C++でのCRLFについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
jsp 改行コードで改行させて表...
-
改行について
-
VBAでCSVをExcelに取り込む時に...
-
【VBA】エクセルで最後の不要な...
-
ラベル(スタティックテキスト)...
-
ファイルから読み取った改行文...
-
Excel VBAからBeckyを起動して...
-
C++で空Enterの入力を判...
-
JAVA Spring 改行コードを含む...
-
変数の中の改行コードをBRタグ...
-
秀丸の正規表現で複数行にわた...
-
awkで改行を除いて文字列を抜き...
-
エクセルVBA 文字列領域が不足...
-
vb.netでのリッチテキストボッ...
-
グレープシティのSPREAD...
-
COBOLの改行
-
最終行の改行について
おすすめ情報