• ベストアンサー

CSV取込を作成しています

文字列を取り込む際にカンマが文字列中に存在していると項目数がずれてしまうので 今回ダブルコーテーションで文字列を囲むようにプログラムの作成を考えています。 始まりのダブルコーテーションから終わりのダブルコーテーションまで一文字づつ ループで回し取得すると思われるのですが、どんな記述にすればよいかサンプルの サイトやサンプルプログラムはありますでしょうか。

  • Java
  • 回答数1
  • ありがとう数7

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

せっかくライブラリが豊富に準備されているんだから http://honeplus.blog50.fc2.com/blog-entry-69.html

tresure7878
質問者

お礼

そんなに豊富にあるんですね。知りませんでした^^

関連するQ&A

  • ExcelのCSV形式について

    ExcelデータをCSV形式で保存するとき文字列はダブルコーテーション、数字列はそのままでカンマ区切りしたいです。確か123のCSV形式はそうなってたと思います。お手数ですが御回答、宜しくお願い致します。

  • 文字列の置換について。

    ダブルコーテーションで囲まれ文字列が あったとします。 その文字列の中に含まれる半角カンマを なくしたいのですが、 リプレイスだと反応がありません。 その他の文字は置換出来るのですが。 どなたから、ダブルコーテーションに囲まれた 文字列の中の半角カンマを取り除く方法が ありましたらアドバイス下さい。 どうぞよろしくお願いします。

    • ベストアンサー
    • Java
  • csvファイルからの読み込みがスムーズにできません

    fscanfでCSVファイルから文字列を取り込み、カンマ区切りで4つの変数に文字列を代入しようと考えているのですが、出力されたcsvファイルが変わった区切りかたをしているのでうまく変数に代入できずに困っております。 例えば、出力されたcsvファイルは以下のようになっております "ABC CO.,I","4540",""STAR"","2010/03/31" 希望としては aにABC CO.,I bに4540 cにSTAR dに2010/03/31 をそれぞれ代入したいのですが aに入る文字列にはCO.,Iというようにカンマが既にありますので カンマ区切りで読み込むとめちゃくちゃになってしまいます ですので基準をダブルクオーテーションに置き、"と"の間の文字列を代入というような形が取れれば良いのですが、このような方法での文字列取得は可能でしょうか? c言語の勉強を始めて間もない為、低レベルな質問、表現であることをお許し下さい。 よろしくお願いします。

  • 文字として, "を使用するCSVファイルの取り扱い

    題名の通り、文字として,(カンマ)、"(ダブルクォート)を使用するCSVファイルの取り扱いについて教えて頂きたいです。 読み込むCSVファイルの形式は以下の通りです。 ・項目の最初と最後には"が設定される ・項目内の,は文字として扱う 例:"5,000" 5の後の,は項目内に設定されている為、文字として扱う ・項目内に"を設定する場合は""と設定する ・レコードは改行コード単位 例:"A","5,000","B","C""D""" 1項目目:"A" 2項目目:"5,000" 3項目目:"B" 4項目目:"C""D""" 上記の様なCSVファイルを読み込み、項目を取得するにはC言語ではどの様に対応するべきでしょうか。 下記方法で対応出来そうですが、効率が非常に悪いと思われます。 (1)fgetsにて1行分のレコードを読み込む。 (2)取得したレコードに対して、カンマを指定してstrtokを実行し、,間の値を取得する。 (3)取得したカンマ間の項目のダブルクォートの数をカウントする。 (4)-1カウント数が偶数の場合 ,を区切り文字とし、取得した値を1項目として扱う。 (4)-2カウント数が奇数の場合 ,を文字とし、次のカンマ間の項目を取得し、連結する。 連結した値のダブルクォート数をカウントし、カウント数が奇数か偶数か判定する。 (5)上記処理をstrtok結果がNULLになるまで繰り返し、NULLが帰ってきたら次の行のレコードを読み込む。 (6)上記処理をEOFまで繰り返す。 以上、よろしくお願いします。

  • AcceseからCSVにエクスポートするマクロを作る

     早速質問です。  目的はMDBファイルをCSVテキストにエクスポートするマクロ(機能がクリックひとつで実現できるよう)を作ることですが、CSVファイルはカンマで区切って、ダブルクォーテーション(”)が入らないようにすることです。MDBファイルの項目が全部テキスト型なので、手動でテキストファイルにエクスポートするときはダブルクォーテーションが入らないように選択できるが、マクロの”テキスト変換”でやるとテキスト型の項目には自動的にダブルクォーテーションがついてしまうのです。 どうすればいいか具体的に教えていただけたらと願ってます。  よろしくお願いします。

  • SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について

    SQLローダーCSV取込で、囲み文字がデータ中に入っている場合について お世話になります。 SQLローダーでCSV取込を行っています。 設定は下記のようになっており、区切り文字はコンマ  囲み文字はダブルコーテーションを指定しています。 LOAD DATA TRUNCATE CONTINUEIF LAST != '"' INTO TABLE WORKTABLE FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' TRAILING NULLCOLS ( data1 char, data2 char, data3 char ) このように取り込んだところ、下記のような行でエラーが発生しました。 「"data1","data2",""文字列,文字列""」 どうやら元々ダブルコーテーションで囲まれていたデータが CSV出力時にもう1度囲まれた状態のようです。 エラー内容 「TERMINATEDとENCLOSEDフィールドに続く終了記号がありません。」 原因はダブルコートであることはわかっています。 色々試したのですが、うまくいきません。 このデータをうまく取り込む方法はあるのでしょうか よろしくお願いいたします。

  • CSVデータを正規表現で抜き出せません・・・。

    お疲れ様です。初投稿になります。 どうぞ宜しくお願い致します。 CVSデータ(囲い文字:"(ダブルコーテーション))を正規表現でマッチングさせ、抜き出そうと考えています。 エスケープ文字を以下のように設定しています。 ・""(ダブルコーテーション * 2) ⇒ "(ダブルコーテーション) ・\"(円記号 + ダブルコーテーション) ⇒ "(ダブルコーテーション) ・\\(円記号 * 2) ⇒ \(円記号) 例えば・・・ "A",""",BB,"",\",CC,\\,DD""","EEEE","", ですと、「"A"」「""",BB,"",\",CC,\\,DD"""」「"EEEE"」「""」と取れる想定になります。 特に2番目の「""",BB,"",\",CC,\\,DD"""」は、 「"""(←escape),BB,""(←escape),\"(←escape),CC,\\(←escape),DD""(←escape)"」 という想定です。 PHP関数ではエスケープ文字の問題により取得しきれず、自力での取得を行っております。 私が考えた正規表現は「"[^"]*((""|\\")[^"]*)*[^\\]",|"",」となりますが、カンマが入り乱れる上記パターンを満たすことができません。 これは、正規表現での解決は不可能でしょうか? 何日も解決できず、困っています・・・。 是非、皆様のお力添えのほど、宜しくお願い致します。 PS. このサイトで動作確認を行っておりました。 参考になれば幸いです。 http://www.rider-n.sakura.ne.jp/regexp/regexp.php

    • ベストアンサー
    • PHP
  • C#カンマで区切る

    文字列3種類 a,bc a,"b,c" "a,b",c 単純にカンマでsplitしてもだめですし、ダブルクォーテーションも文字列にカンマがある時だけついて来ます。 カンマで二つの文字列に区切るにはどうすれば良いでしょうか。お願いします。なおCSVファイルではなく、ただの文字列です。

  • EXCELでの置換でコーテーションを残す方法

    どなたか教えて下さい。 EXCELの置換(「編集」-「置換」)で文字列の置換は出来るのですが、 ” :ダブルコーテーション から ’ :シングルコーテーション に置換したいのですが、その場合、セルの先頭のシングルコーテーションが文字列の始まりと捕らえられ消えてしまいます。 これをそのまま残す方法はありますか?

  • EXCEL VBAでのCSVファイルの編集

    CSVファイル(ダブルクォーテーション)形式のファイルをEXCEL VBAにて行の編集(削除)をした後、上書き保存をしたらダブルクォーテーション区切りではなくカンマ区切りのCSVファイルの形式になってしまいます。 ダブルクォーテーション区切りのCSVファイルで上書き保存する記述があれば教えて下さい。おそらくEXCELでCSV形式の上書きはCSV2の形式で保存されるみたいです。 困っています。どなたかお助け下さい。

専門家に質問してみよう