C#を始めて1か月も経たない初心者です。初質問で緊張しています。
C#でExcelで作成された"Item.csv"というファイルを読み込み、配列に格納するプログラムをご教授頂きたいです。
また、Excelで作成されたCSVファイルを読み込む場合、行全体だけでなく、行列を指定することは可能なのでしょうか?
例えば一番下の行の"A75004M05"を指定し、この文字であれば次のダイアログ画面へ行く。
それ以外なら進めないといった処理を行います。
その際に一番下の行の"A75004M05"を抽出したいです。
初心者プログラマーのため、質問が理解できなかったり、足りない場合は申し訳ないです。
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
C#
1 public void ReadCSV1(string [] args) 2 { 3 var parser = new TextFieldParser(@"Item*.csv", Encoding.GetEncoding("Shift_JIS")); 4 using (parser) 5 { 6 parser.TextFieldType = FieldType.Delimited; 7 parser.SetDelimiters(","); 8 9 parser.HasFieldsEnclosedInQuotes = true; 10 11 parser.TrimWhiteSpace = false; 12 while (!parser.EndOfData) 13 { 14 string[] row = parser.ReadFields(); 15 foreach (string field in row) 16 { 17 Console.Write(field + "\t"); 18 } 19 Console.WriteLine(); 20 } 21 } 22 Console.ReadKey(); 23 24 } 25
試したこと
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
画像とは?
画像を載せたはずなのですが、掲載されていませんでした。編集します。
追加させて頂きました。
CSV の実態はテキストファイルです。Excel の実行画像ではなく、CSV をテキストエディタで開いてその内容を質問に追記した方が適切な回答が得られやすいと思います。その際コードブロックを使ってください。
YAmaGNZ さんへのコメントで思ったのですが、多分これは CSV ではなく INI ですね?
INI の場合大抵はテキストファイルとして扱って良いのですが、中にはそうでないものもあります。INI をよく使うようであれば、Windows API 呼び出しを使うのが安全かもしれません。http://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html
本当にありがとうございます。Zuishin様含めみなさん迅速な回答で初めての質問で不安だったのですが非常に助かっております。
質問を編集しましたので、お時間がありましたらよろしくお願い致します。
csvでないならexcelで開いても無益です。テキストエディタで開いて、それをコードとして「```」で囲んではりつけていただくことはできませんか?
毎度毎度迅速なご対応本当に感謝しております!拡張子が一応.csvなのですがそれでもだめでしょうか?
覚えることが多すぎて頭がパニック起きてます
「だめ」をどう理解するかにもよりますが、内容がcsvの仕様にあっていないものを、excelやtextfieldparserで読んでも嬉しいことがありません。特にexcelは区切り文字などが画面上見えなくなるので、回答に繋げることが難しくなります。右クリックしたメニューでプログラムから開く、でメモ帳を選択するか、メモ帳にドラッグドロップすることは不可能ですか?
まず覚えるべきは、これはCSVではない、ということと、excelで開いてちゃんと四角形にデータが見えないやつは、エディタ(vscode、なければメモ帳でも)で開いてみる。の2つです。
セルに分割配置されてるのでもっと大きい単位でカンマ区切りの可能性もあります……? どちらにせよ「テキスト」としてのデータ内容とフォーマットが確認できないことには回答のしようがないタイプの問題ですね。
メモ帳に変えたらカンマがたくさん出てきました。この中のInit,1の1を指定して、この処理が終わったら次はWAIT_Tの100を読むといったようなことをしたいです。
CSV ではあるんですね。このデータを処理することは可能です。しかしどうしてみなさん渋い顔なのかと言うと、「このデータを処理できるプログラム」を作ったからと言って「このデータが更新されても処理できるプログラム」にはならない可能性があるからです。データがどのように変化するのか(新しい項目が増えることがあるのか、グループ名は固定なのかなど)の詳細がわからなければ、変化に対応することはできません。今まではどうやって処理していて、それをどうして何も知らされていない人が担当するようになったのでしょう? 今までのやり方ではいけませんか?
と書いている間に内容がガラッと変わりましたが、ここまで変わるなら処理は不可能というほかありません。
いやまじで不可能でしょ。最初にZuishinさんが仰ってたことを2回目の繰り返しになりますが、書きますけど、それをコードブロックに貼れないのですか?最初のexcelの図とテキストでは[テスト項目]がなくずれてますし、今度は仕様が全然違う。shutdownやsnlenやinitやwaitはどうしたのですか
私の回答に寄せられたコメントからすると質問者様にこのファイルを渡しているオヤブンがcsvでないものをexcelに読ませた結果としてcsvになっているのだろうと思います。こんなiniっぽいcsv作る処理をかくなんてまともじゃないと思うので。
当初質問に貼ってたのは、秀丸で開いている、Scan.iniじゃないですよね…みんなiniだって言ってたよね…
もしかしてコピペ知りませんか? メモ帳でテキストファイル(この場合 CSV)を開いたら、Ctrl+A ですべて選択し、Ctrl+C でクリップボードにコピーします。そして質問を編集し、Ctrl+V で貼り付け、貼り付けたデータをマウスでドラッグして選択し、<code> というボタンを画面から探して押してください。
回答5件
あなたの回答
tips
プレビュー