2016-11-21 28 views
-1

winformsユーザーに、必要なExcelテンプレートをダウンロードさせていただきます。 Excelファイルをプロジェクトリソースのリソースとして追加しましたが、ファイルを読み込んで再度保存できるようです。埋め込みリソース内のExcelファイルが見つかりません

var test = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames(); 
//One of the entries in test = MyProject.Properties.Resources.resources 

Assembly assembly = Assembly.GetExecutingAssembly(); 
Assembly asm = Assembly.GetExecutingAssembly(); 
Stream fileStream1 = asm.GetManifestResourceStream("MyProject.Properties.Resources.resources.ExcelTemplate.xlsx"); 

int len = fileStream1.Length; //Give error: Object reference not set to an instance of an object. 

enter image description here

(ファイルは、それは同様に、通常のファイルとすることができ、Resoucesである必要はありませんが、私も働いて得ることができないということ)

答えて

0

あなたの場合ファイルをコピーする以外の何かをする必要があります。私はあなたがMicrosoftの相互運用機能やその他のライブラリを使用する必要があるかもしれないと推測しています。以下では、ファイルを単に宛先にコピーします。

Stream fileStream1 = asm.GetManifestResourceStream("MyProject.Properties.Resources.resources.ExcelTemplate.xlsx"); 

私はあなたがそのように参照する必要がある場合はわからない:

も 下記のお行は、あなたは、Excelファイルをテンプレートで、Excelテンプレートの拡張子がないxlsxxltxをしていると言います。しかし、あなたがファイルを取得していることを確認し、私はあなたがエラーではないと推測しています。私の行がどのように構成されているかを見てください。 ExcelAsResourceはプロジェクト名です。

これが役に立ちます。

Assembly asm = Assembly.GetExecutingAssembly(); 
Stream s = asm.GetManifestResourceStream("ExcelAsResource.Resources.TestEmbeddedExcel.xlsx"); 
FileStream fs = new FileStream(@"C:\Users\John\Desktop\cs\TestCopy.xlsx", FileMode.OpenOrCreate); 
s.CopyTo(fs); 
fs.Close(); 
s.Close(); 
+0

ありがとうございました。はい、私はファイルへの参照がそこにないと信じています。理由は分かりません。あなたのコードは同じエラーを返します。 "オブジェクト参照がオブジェクトのインスタンスに設定されていません"、行 "s.CopyTo(fs);" –

+0

もう一度ファイルのように聞こえます。 'Stream fileStream1 = asm.GetManifestResourceStream(" MyProject.Properties.Resources.resources.ExcelTemplate.xlsx ");この行は明らかにあなたのファイルを返さないので、パスを二重にチェックします。それは私には見えません。 – JohnG

+0

あなたのファイルをどのように構造化したかによってファイルの内容が変わりますが、 'Resource'は' project'.Resources.FileName'の下に表示されるので、 'Properties'部分の下にはありません。 Properties修飾子が間違った場所にあるファイルを探しています。 – JohnG

関連する問題