- ベストアンサー
C#でCSVファイルから検索したい文字を取得する方法
magicalpassの回答
第1パラメータにCSVのファイル名、 第2パラメータに探したいコード番号(ex.7500100) を指定すると「アイ」の列の項目を表示するコンソールプログラムの例。 using System; using System.IO; namespace CSVRead { struct piyopiyo { public string number; public string code; public string piyo1; public string piyo2; public string piyo3; public string piyo4; public string piyo5; } class Program { static void Main(string[] args) { piyopiyo readdata = new piyopiyo(); readdata.code = string.Empty; try { // 第1パラメータで指定されたシフトJISコードのファイルを開く StreamReader sr = new StreamReader(args[0], System.Text.Encoding.GetEncoding("shift_jis")); string line; // 1行ずつ読み込み while ((line = sr.ReadLine()) != null) { // 行を「,」で分割 string[] param = line.Split(','); // 「"」を除去して構造体に格納 readdata.number = (param[0].Split('"'))[1]; readdata.code = (param[1].Split('"'))[1]; readdata.piyo1 = (param[2].Split('"'))[1]; readdata.piyo2 = (param[3].Split('"'))[1]; readdata.piyo3 = (param[4].Split('"'))[1]; readdata.piyo4 = (param[5].Split('"'))[1]; readdata.piyo5 = (param[6].Split('"'))[1]; // 第2パラメータで指定されたコード番号を判定 if (readdata.code == args[1]) { break; } } if (readdata.code != args[1]) { Console.WriteLine("{0:s} は無いの", args[1]); } else { Console.WriteLine("{0:s} は {1:s} なの", args[1], readdata.piyo3); } } catch (Exception e) { Console.WriteLine("{0:s} なんて読めないの", args[0]); } } } }
関連するQ&A
- csvファイルを開かずに文字を検索し行を抽出したい
フォルダの中に複数のCSVファイルが有ります。 これらのファイルを開かずに文字列を検索し、検索対象の文字と完全一致する 文字がある行をまとめてひとつのファイルに抽出する方法を探しています。 例:Aフォルダ内にファイル1、ファイル2、ファイル3、、、と複数のファイルがある。 ファイルのフォーマットはすべてCSV。ファイルにはシートは一つのみ。日付なのですべて異なります。 A B C D E F G H I J K L 加工年月日時分 品種 コード A列 B列 C列 D列 E列 F列 G列 本数 作業者 ・ ・ ・ A~Lまであり、Cのコードが指定した検索文字と完全一致するものを抽出したいです。 急ぎの内容の為、VBAやコマンドプロンプトなど、自分なりに色々なサイトにある プログラムを組み換えようとしましたが初心者の為すぐに理解して応用はとても 無理でした。知恵を貸して頂きたいです。
- 締切済み
- Visual Basic
- CSVファイルによる検索の高速化
CSVファイル内を検索し、一致した行を抽出して出力する際、みなさんはどのような方法を選びますか?私の手元にあるCSVファイルは3000行以上のファイルで、500KBあります。出来る限り、高速化したいのです。文字コードはUTF-8で日本語が主に書かれています。
- ベストアンサー
- PHP
- csvファイルでの出力について
C言語初心者です。 プログラミングにおいて質問なのですが、csvファイルを読み込み、 そのデータを用いて計算し、csvファイルで出力するという問題なのですが、C言語においてcsvファイル形式で出力するにはどのような方法がありますか? 補足:ラベル行に全角文字を入力しないといけません。
- 締切済み
- C・C++・C#
- csvファイル検索
フォームから検索文字を入力してもらい 4列、2000行ほどのcsvファイル内を検索し、ヒットしたらその行を出力するというものを作りたいと考えています。 csv ------------------------- 1|自転車 バイク 2056,タイヤ,ペダル,ハンドル | ------------------------- 2|バイク 2001,タイヤ,ペダル,ハンドル | ------------------------- 3|自転車 バイク 2001,タイヤ,ペダル,ハンドル | ------------------------- 4|自転車 バイク 5601,タイヤ,ペダル,ハンドル | ------------------------- といった行があったとして、フォームに "自転車 56"と入力した際、 1行目3行目4行目の文字列を表示したいのですが、その際 1行目と4行目は2つヒットしているので3行目より上に表示させたいのです。 yahooなどの検索サイトのor検索のようなものです。(スペース区切り) 正規表現でやればいいのか?と思い手をつけてみたのですがどうも違うようですし、もしかしたらPHPで作ろうというのが間違っているのかもしれませんが、何か方法及び参考になるurlがありましたら教えてください。 よろしくお願いします。 windows2000 php4-4.3.8-18です。
- 締切済み
- PHP
- CSVファイルのデータの行数を取得したい
こちらではいつもお世話になっています。Perlに関して、初心者ですが教えてください。 CSVファイルについて、データの存在する行数を取得したいと考えています。自分なりに考えたところでは、下記の方法で取得できるのではと思ったのですが・・・・・ open(FH,"data.csv"); @array = <FH>; $count = $#array; close(FH); data.csvは、1行目から順にデータが入っています。 これで、$countに1を足せばCSVデータの行数になるのではないかと考えています。 しかし、実際に動かしてみると、$countには、data.csvにデータがあるのに「-1」(要素なし)が返ってきます。何か間違いがあるのでしょうか。 あるいは、別にCSVデータの行数を取得する方法が他にあれば、教えていただけないでしょうか。 よろしくお願いします。
- ベストアンサー
- Perl
- Visual C++によるcsvファイルの読み込みについて
Visual C++を使い始めたばかりの初心者です。 恐縮ながら、Visual C++でのcsvファイルの処理方法についておたずねさせていただければと存じます。 通常のスクリプト言語では、1行読んできて、"," で split をしてやることで、csvファイルを処理できるのですが、Visual C++ではどのようにするのが効率がいいのでしょうか? csvファイルを簡単に取り扱うことができるようなクラスライブラリが提供されているものなのでしょうか?それとも、1文字1文字、コンマを判定していくのが普通なのでしょうか? よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- csvファイルをfscanfで読み込むと変な文字が出てきます
csvファイルをfscanfで読み込もうとしているのですが どうしてもおかしな文字が混じってしまいます 例えばcsvファイルのデータが abc,efg となっているとします これを読み込みprintfで表示すると abc"" efg"" というように表示されてしまいます csvファイルを普通に開いてもこのような文字はありません 一体どこから沸いて出てくるのでしょうか? %[^]を使って不要な文字を読み込まないように %[^"]と記述しましたが エラー番号c2143とc2059が出てしまいます 何か解決方法はございませんでしょうか? よろしくお願いします。
- ベストアンサー
- C・C++・C#
- 複数のCSVファイルからのデータ取得(VBA)
エクセルVBAで、エクセルの指定シートに複数のCSVファイルからデータを取得する方法を ご教授お願います。 エクセルの指定シートの指定されたセルに、複数のCSVファイルから指定箇所のデータを 取得し転送する方法を考えていますが、どうもうまくいきません。 たとえば、 CSVファイル(1) A5(A) A10(B) CSVファイル(2) A5(C) A10(D) CSVファイル(3) A5(E) A10(F) ・ ・ ・ と、指定されたセルからデータを取得し、 エクセルの指定シートの表に CSVファイル (1) (2) (3) ・ ・ ・ ------------------------------------------- A5から取得したデータ A C E ・ ・ ・ A10から取得したデータ B D F ・ ・ ・ ------------------------------------------- と、いうように転送して貼り付けていきたいです。 いろいろ調べてみたのですが、このような方法が見つけられませんでした。 ぜひ、皆様のお知恵をお貸しください。 宜しくお願い致します。
- ベストアンサー
- その他MS Office製品
- csvファイルのデータ列数を取得したいのですがうまくいきません。
csvファイルのデータ列数を取得したいのですがうまくいきません。 VB2010、StreamReaderでファイルを読み込み、 以下のコードで列数を取得してみたのですが、 数値変数の「列数」に7が入ります。 実際は3列しかありません。 SR.ReadLine()で読み込んだデータ右端部にいらないカンマがいくつか並んでいました。 列数 = UBound(Split(SR.ReadLine(), ",")) どう修正したらよいでしょうか。 また、csvファイルのデータ列数を簡単に取得する方法はないでしょうか? 教えてください。 お手数をおかけしますがよろしくお願いします。
- ベストアンサー
- Visual Basic
- VBAよりCSVファイルの任意の行を取得
お世話になります。 Access2010 VBAよりCSVファイルの2行目の文字列を取得したいのですが、とりあえず下記で取得することができました。 path = CurrentProject.path cnt = 1 Open path & "\test.csv" For Input As #1 Do Until cnt > 2 Line Input #1, buf If cnt = 2 Then MsgBox buf End If cnt = cnt + 1 Loop Close #1 例えば、 1行目 xxxxx 2行目 フィールド1,フィールド2,フィールド3,・・・ 3行目 データ1,データ2,データ3・・・ という内容のCSVがあり、上記のVBAを実行すると、2行目の『フィールド1,フィールド2,フィールド3,・・・』を表示できます。 で、実際のCSVファイルは数十万行あるのですが、そのファイルを指定し上記VBAを実行すると、Line Input #1, bufの箇所で「実行時エラー14 文字列領域が不足しています。」と表示されてしまいます。 何かよい方法はございますでしょうか。 なお、当該Accessはユーザーへ配布するものであり、Runtime環境で実行します。 よって、CreateObjectは使えない状況です。 勉強不足で申し訳ございませんが、ご教授の程よろしくお願い致します。
- ベストアンサー
- その他(データベース)
お礼
ありがとうございます。 助かりました。