- ベストアンサー
c#でcsvファイルをリソースとして読み込む方法
- c#でcsvファイルをリソースとして読み込む方法を教えてください。
- リソースの追加でcsvファイルをResourcesフォルダに入れた後、変数に代入する方法を教えてください。
- 222.csvがResourcesフォルダに入ると_222.csvというファイル名に変わりますが、それを考慮した正しい記述方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
> これで設定したボタンを押してみましたが、何も起こりませんでした… Windowsフォームの環境でしたらテキストボックスか何かにでも出力してみてください。 例に書いたのはコンソールアプリ用のものですから。 textBox1とかいうテキストボックスがあったら private void button3_Click_1(object sender, EventArgs e) { string txt = Properties.Resources._222; textBox1.Text = txt; } とかいうように。
その他の回答 (2)
- magicalpass
- ベストアンサー率58% (378/648)
とりあえず、ソリューションエクスプローラーに表示されているファイル名は忘れてください。 「プロジェクト」メニューの一番下の「○○○のプロパティ」(○○○はプロジェクトの名前)を開くとプロジェクトに登録されているリソースの一覧が出ますので、そこに表示されている名前を使ってください。 仮にこのリソース名を hogehoge とすると、 string txt = Properties.Resources.hogehoge; で、txtにhogehogeの中身が読み込まれます。 (今の場合、txtの中身は csvファイルの内容そのもの) リソースの読み込みはこれだけでOKです。 読み込んだcsvの中身を行毎やセル毎に取り出すというのは、また別の作業です。 試しに Console.Write(txt); とすれば、csvの中身がコンソールに表示されるはずです。
補足
度々もうしわけありません。 仰る通りに実行したのですがまだうまくいきません。 プロパティの内容を読み込むだけのボタンを作って実行してみました。 private void button3_Click_1(object sender, EventArgs e) { string txt = Properties.Resources._222; Console.Write(txt); } プロパティ内でファイル名は_222になります、これはResources.まで打ち込むと自動で出てくる名を タブキーで選択しているので間違いないと思います。 これで設定したボタンを押してみましたが、何も起こりませんでした… 他に注意する点などありませんでしょうか? お忙しい中何度も申し訳ありませんがよろしくお願いします。
- magicalpass
- ベストアンサー率58% (378/648)
リソースはビルド時にオブジェクトとしてプログラムの中に組み込まれるので、Resourceフォルダのパスを指定しても意味ありません。第一、実行環境にResourceフォルダなんてものは用意されません。 リソースに追加したときにリソースIDなりリソース名なりを付加しているはずなので、それを使ってアクセスします。 リソースの使い方ぐらいググればいくらでも出て来ますが、 http://dobon.net/vb/dotnet/programing/bitmapresource.html (これは古い方法) とか http://dobon.net/vb/dotnet/programing/vsresource.html あたりが参考になるでしょう。
補足
お返事ありがとうございます。 質問前に方法をグーグル検索で探し、該当のページも拝見しましたが 初心者ですので、はっきりと理解ができませんでした。 今回の場合、以下のコードを記述すればリソースフォルダに入れたcsvファイルが 読み込めるということでしょうか? //現在のコードを実行しているAssemblyを取得 System.Reflection.Assembly myAssembly = System.Reflection.Assembly.GetExecutingAssembly(); //指定されたマニフェストリソースを読み込む System.IO.StreamReader sr = new System.IO.StreamReader( myAssembly.GetManifestResourceStream("Project1.222.csv"),//ここでファイル名を指定。 System.Text.Encoding.GetEncoding("shift-jis")); //内容を読み込む string s = sr.ReadToEnd(); //後始末 sr.Close(); よろしくお願いします。
お礼
お返事遅くなりまして申し訳ありませんでした。 おかげさまで問題解決しました。 お忙しい中何度もご回答ありがとうございます 本当に助かりました。