2010-12-06 111 views
1

我想從我的程序中打開MS Word文檔。目前,它可以在設計器模式下找到它,但是當我發佈我的程序時,它找不到該文件。我相信我需要將它嵌入到我的程序中,但我不知道如何做到這一點。這是我當前的代碼來打開文件:在C#中嵌入Word文檔#

System.Diagnostics.Process.Start("Manual.docx"); 

我覺得需要被嵌入到.exe文件的資源,Word文檔,但我不知道如何做到這一點。

任何人都可以提供一些建議嗎?

回答

1

只需將其包含到您的項目中(添加現有項目),然後從打開的菜單中選擇所有文件並選擇您的word文檔。還將文檔複製到Bin/Debug文件夾中。如果您正在使用安裝程序,請將文檔包含在安裝程序中,並且它應該可以正常工作。

+0

當您添加文件時,請確保您選擇「複製到輸出目錄」作爲「始終複製」。這樣您就不必手動將文件複製到bin文件夾。它將永遠爲你複製。部署Pabuc說。 – 2010-12-06 14:29:18

2

右鍵單擊要在解決方案中存儲文件的文件夾,然後選擇添加 - >現有項目。

一旦添加了文件,您可以將項目中文件的Build Action更改爲Embedded Resource而不是Resource。這可以通過轉到文件的VS中的Properties並修改Build Action屬性來完成。

6

Aaron在添加嵌入資源方面非常合適。執行以下操作來訪問嵌入的資源:

Assembly thisAssembly; 
thisAssembly = Assembly.GetExecutingAssembly(); 
Stream someStream; 
someStream = thisAssembly.GetManifestResourceStream("Namespace.Resources.FilenameWithExt"); 

此處瞭解詳情: How to embed and access resources by using Visual C#

編輯:現在實際運行,您將需要複製該文件在一些臨時目錄的文件。您可以使用以下功能保存流。

public void SaveStreamToFile(string fileFullPath, Stream stream) 
{ 
    if (stream.Length == 0) return; 

    // Create a FileStream object to write a stream to a file 
    using (FileStream fileStream = System.IO.File.Create(fileFullPath, (int)stream.Length)) 
    { 
     // Fill the bytes[] array with the stream data 
     byte[] bytesInStream = new byte[stream.Length]; 
     stream.Read(bytesInStream, 0, (int)bytesInStream.Length); 

     // Use FileStream object to write to the specified file 
     fileStream.Write(bytesInStream, 0, bytesInStream.Length); 
    } 
}