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

时间:2011-11-10 17:08:54

标签: c# excel resources embedded-resource excel-interop

我正在使用Microsoft Office Interop打开Excel文件。该文件放在一个特殊的文件夹中,Workbook代码从该文件夹中读取文件。现在,要求是Excel文件可以放在任何地方。我认为最好的方法是将Excel文件作为嵌入式资源附加。但如果我作为嵌入式资源附加,我将如何使用Excel工作簿读取该文件。

_excelapplication.Workbooks.Open(Filename: pExcelTemplatePath);

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

2 个答案:

答案 0 :(得分:6)

您无法直接从嵌入式资源中打开它 - 至少不能使用Interop ...

您需要将其作为文件保存在某个地方 - 即首先从资源中读取它(例如通过Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceNameOfEmbeddedExcelFile)),然后将该流写入某个位置,如ApplicationData / CommonApplicationData / LocalApplicationData / MyDocuments / CommonDocuments from Environment.SpecialFolder

另一种选择是使用能够从流中打开/编辑Excel文件的库 - 如果您需要一些指向库的链接,请告诉我......

答案 1 :(得分:0)

首先,您应该使用此函数获取资源文件的流:

 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;
            }

然后您可以将流保存到文件:How do I save a stream to a file

然后打开它:How to open an Excel file in C#