打开Excel工作簿文件使用embedded式资源

我正在使用Microsoft Office Interop来打开Excel文件。 该文件放置在工作簿代码读取文件的特定文件夹中。 现在,要求是Excel文件可以放在任何地方。 我相信最好的办法是将Excel文件作为embedded式资源。 但是,如果我作为embedded式资源附加,我将如何使用Excel工作簿读取文件。

_excelapplication.Workbooks.Open(Filename: pExcelTemplatePath); 

无论文件位置如何,读取excel模板文件的最佳方法是什么?

您不能直接从embedded式资源中打开它,至less不能使用Interop …

你需要把它保存在一个文件的某个地方 – 也就是说首先从资源中读取它(例如通过Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceNameOfEmbeddedExcelFile) ),然后把这个stream写到ApplicationData / CommonApplicationData / LocalApplicationData / MyDocuments /来自Environment.SpecialFolder CommonDocuments

另一个select是使用能够打开/编辑Excel文件的库 – 让我知道如果你需要一些链接到库…

首先你应该使用这个函数获取资源文件的stream:

  public static Stream GetResourceFileStream(string fileName) { Assembly currentAssembly = Assembly.GetExecutingAssembly(); // Get all embedded resources string[] arrResources = currentAssembly.GetManifestResourceNames(); foreach (string resourceName in arrResources) { if (resourceName.Contains(fileName)) { return currentAssembly.GetManifestResourceStream(resourceName); } } return null; } 

然后,您可以将stream保存到文件: 如何将stream保存到文件 。

并打开它: 如何在C#中打开一个Excel文件 。