いつもお世話になっております。
現在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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonで、データファイルと列名ファイルを1つのファイルにしたいです。 1 2023/07/27 20:29
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- Excel(エクセル) エクセルでSUMIFS関数で条件範囲の部分が#valueになる。 4 2023/04/28 12:42
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- Visual Basic(VBA) 【VBA】写真の縦横比を変えずに貼り付ける 5 2023/06/13 11:42
- その他(IT・Webサービス) 知り合いがバンドをしており、CDを作成したものをもらいました。 そのジャケットの表紙にQRコードがあ 5 2022/10/04 22:08
- C言語・C++・C# このプログラミング誰か教えてくれませんか 3 2022/05/13 17:27
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
エスケープ文字の復帰(¥r)と...
-
ファイルから読み取った改行文...
-
ソースコードの1行が長いとき...
-
COBOLの改行
-
エクセルVBA 文字列領域が不足...
-
ToolTipTextの改行はできないの...
-
JavaMail,本文中の改行について
-
aspで作成するcsvファイルで、e...
-
PHPExcelでのexcelヘッダ編集に...
-
C#における改行を含む文字の探索
-
【VBA】エクセルで最後の不要な...
-
1行ごとに取得して、その改行...
-
項目内改行があるCSVの書式設定...
-
文字列型変数に1024を超えた文...
-
JAVA System.out.println の ...
-
textarea内での改行がechoで反...
-
awkで改行を除いて文字列を抜き...
-
VBでcsv読込TextFieldParser...
-
改行コード(CR/LF)の設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAのコマンドボタンの文字列の...
-
ソースコードの1行が長いとき...
-
エスケープ文字の復帰(¥r)と...
-
ファイルから読み取った改行文...
-
JAVA System.out.println の ...
-
C++で空Enterの入力を判...
-
COBOLの改行
-
テキストファイルから改行コー...
-
改行について
-
【VBA】エクセルで最後の不要な...
-
1行ごとに取得して、その改行...
-
jsp 改行コードで改行させて表...
-
VBAでCSVをExcelに取り込む時に...
-
エクセルVBA 文字列領域が不足...
-
最終行の改行について
-
改行を読み飛ばす
-
コンボボックスの項目中に改行を
-
テキストボックス行の桁数を制...
-
ExcelVBAでメールを作成してメ...
-
JavaMail,本文中の改行について
おすすめ情報