teratail header banner
teratail header banner
質問するログイン新規登録

質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

解決済

1回答

3230閲覧

追加したexcelファイルのファイル名取得

chintao1224

総合スコア156

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2018/09/08 10:53

編集2018/09/08 12:06

0

0

リソースにexcelファイルtest.xlsxを追加しました。
このファイルのファイル名を取得するにはどうすれば良いでしょうか?

C#

1byte[] bs = Properties.Resources.Test;

取得したものはバイト配列になっています。
これを文字列にしたいです。

ResourceManagerを調べましたが、取得できそうもなかったです。

よろしくお願いします。

追記します。
プロジェクトを右クリックして、プロパティをクリックして、リソースをクリックして、リソースの追加の右の下ボタンをクリックして、既存のファイルの追加をクリックしてファイルを追加しました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2018/09/08 11:40

Windows Forms か WPF かどちらですか? またどのようにリソース化していますか?
chintao1224

2018/09/08 11:53

windowsフォームアプリケーションで、システムのプロパティからファイルを追加しました。
Zuishin

2018/09/08 12:01

システムのプロパティからファイルを追加するというのはどういうことですか? 質問を編集して詳しい手順を書いてください。
guest

回答1

0

ベストアンサー

ファイルはありません。
ソリューションエクスプローラーで該当するエクセルファイルを右クリックしてプロパティを開き、ビルドアクションをコンテンツに、出力ディレクトリにコピーを新しい場合はコピーするにしてください。
そうしてビルドすれば、exe ファイルの作成されるディレクトリに Resources というディレクトリが作られ、そこにエクセルファイルが置かれます。

投稿2018/09/08 12:16

Zuishin

総合スコア28675

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

chintao1224

2018/09/08 12:39

ファイルがありませんというのが解らないのですが。追加の仕方が良くないのでしょうか?戻ってきたバイト配列を文字列に変えることは出来ないのでしょうか?
Zuishin

2018/09/08 12:44

戻ってきたバイト配列はエクセルファイルの中身です。
chintao1224

2018/09/08 12:49

ではファイル名の取得はできないのでしょうか?
Zuishin

2018/09/08 12:52

ファイルが無いのになぜファイル名が取得できるのでしょう?
chintao1224

2018/09/08 13:53

ファイルの中身は取れているんですけど、ファイルは無いのですか?
Zuishin

2018/09/08 14:04

私の回答の通りにすればファイルがコピーされます。
chintao1224

2018/09/08 14:08

すみません、もう少し教えてください。ソリューションエクスプローラでエクセルファイルを右クリックしプロパティを開きとありますが、プロパティをクリックしても何の反応もありません。どうすれば良いのですか?ちなみにエクセルファイルはResourcesの下にあります。
Zuishin

2018/09/08 14:17

プロパティタブがすでに表示されていれば反応はないかもしれません。 プロパティタブを開くのがその動作の目的です。 できなければエクセルファイルを選択して Alt+Enter を試してください。
chintao1224

2018/09/08 14:39

できました。ということは、実行ファイルのフォルダから該当のエクセルファイルのパスを取得すればよいということでしょうか?エクセルファイルが2つ以上ある場合、ファイル名はどうすれば取れるのでしょうか?
Zuishin

2018/09/08 14:47

ちょっと話が見えないんですが、何のためにファイル名が必要なんでしょうか? たとえば e1.xls と e2.xls をリソースにした場合、それらは Resources/e1.xls と Resources/e2.xls というパスでアクセスできます。 これが通常のファイル名の使用法です。 ファイルがない場合にはファイル名によるアクセスができません。 ディスク上にそのような名前のファイルが実在しないからです。 で、この場合はファイル名を取得してどう使うのですか?
chintao1224

2018/09/08 14:51

ある条件分岐で、この場合はe1.xlsを使い、この場合はe2.xlsを使いたいということになります。
Zuishin

2018/09/08 14:59 編集

こんな感じで使ったらどうですか? string fileName = (条件) ? "e1.xls" : "e2.xls"; string path = System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, $"Resources\{fileName}");
chintao1224

2018/09/08 15:02

なるほどです。いろいろありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問