アプリ版:「スタンプのみでお礼する」機能のリリースについて

c#でcsvファイルをリソースとして読み込むには?

222.csvというファイルがあります、
これを「リソースの追加」からResourcesフォルダに入れ、ソリューションエクスプローラーから
ファイルの存在を確認するところまではできたのですが、
このcsvファイルの内容を変数に代入できずに困っております。

222.csvがResourcesフォルダに入ると_222.csvというファイル名に変わるので、
以下の記述によって変数に代入できるかと思ったのですが、うまくいきません。

string path = Project1.Properties.Resources._222;
他に正しい記述の仕方があるのでしょうか?

アドバイスお願いします。

A 回答 (3件)

> これで設定したボタンを押してみましたが、何も起こりませんでした…



Windowsフォームの環境でしたらテキストボックスか何かにでも出力してみてください。
例に書いたのはコンソールアプリ用のものですから。

textBox1とかいうテキストボックスがあったら

private void button3_Click_1(object sender, EventArgs e)
{
string txt = Properties.Resources._222;
textBox1.Text = txt;
}

とかいうように。
    • good
    • 0
この回答へのお礼

お返事遅くなりまして申し訳ありませんでした。
おかげさまで問題解決しました。

お忙しい中何度もご回答ありがとうございます
本当に助かりました。

お礼日時:2010/05/06 21:43

とりあえず、ソリューションエクスプローラーに表示されているファイル名は忘れてください。



「プロジェクト」メニューの一番下の「○○○のプロパティ」(○○○はプロジェクトの名前)を開くとプロジェクトに登録されているリソースの一覧が出ますので、そこに表示されている名前を使ってください。

仮にこのリソース名を 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.まで打ち込むと自動で出てくる名を
タブキーで選択しているので間違いないと思います。

これで設定したボタンを押してみましたが、何も起こりませんでした…
他に注意する点などありませんでしょうか?

お忙しい中何度も申し訳ありませんがよろしくお願いします。

補足日時:2010/04/29 09:28
    • good
    • 0

 リソースはビルド時にオブジェクトとしてプログラムの中に組み込まれるので、Resourceフォルダのパスを指定しても意味ありません。

第一、実行環境にResourceフォルダなんてものは用意されません。
 リソースに追加したときにリソースIDなりリソース名なりを付加しているはずなので、それを使ってアクセスします。

リソースの使い方ぐらいググればいくらでも出て来ますが、

http://dobon.net/vb/dotnet/programing/bitmapreso …
(これは古い方法)
とか

http://dobon.net/vb/dotnet/programing/vsresource …
あたりが参考になるでしょう。

この回答への補足

お返事ありがとうございます。
質問前に方法をグーグル検索で探し、該当のページも拝見しましたが
初心者ですので、はっきりと理解ができませんでした。

今回の場合、以下のコードを記述すればリソースフォルダに入れた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();


よろしくお願いします。

補足日時:2010/04/26 12:30
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています