C# Visual Studio 2012:如何打开与项目关联的excel文件?

C# Visual Studio 2012:如何打开与项目关联的excel文件?,c#,excel,visual-studio-2012,relative-path,C#,Excel,Visual Studio 2012,Relative Path,因此,我正在处理一个使用excel文件向用户控件添加“说明”的项目 Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\absolute path\filename.xlsx", Type.Missing, Type.Missing , Type.Missing, Type.Missing, Type.Missi

因此,我正在处理一个使用excel文件向用户控件添加“说明”的项目

Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"C:\absolute path\filename.xlsx", Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing);
这很好用

然后我尝试重命名该文件(只是为了确保C:\文件没有因为某些奇怪的原因被打开),并将其添加到我的项目中,这样我就不必依赖于能够访问特定的驱动器(即文件可以打开,因为它与项目相关联)。然后我尝试了以下代码:

Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(@"newfileName.xlsx", Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing, Type.Missing, Type.Missing
                                                                 , Type.Missing, Type.Missing);
这给了我这个:

“无法找到其他信息:'newfileName.xlsx'。”。检查文件名的拼写,并验证文件位置是否正确。“


我想知道向项目中添加excel文件并使用相对路径名打开它的正确方法是什么?

第二个示例是尝试在工作目录中打开此文件。因此,如果要在生成时复制此文件,只需将“复制到输出目录”属性更改为“true”“对于此文件

如果要将文件与项目关联,则需要资源。在这里,您可以看到如何向项目中添加资源:

资源是流动的。它们存储在内存中。所以我建议您使用一个接受流的类。不是文件的路径

因为
工作簿.Open
从文件路径创建流。最好是寻找一个重载类或直接接受流的替代类

var doc = SpreadSheetDocument.Open(Properties.Resources.YourFile , isEditable);
isEditable
是bool。您可以使用
true
false
。如果将其设置为false,它将是只读的

我建议您看看这个主题,以便:

如果您想使用当前的类,任何方式都可以。您必须将流临时保存到磁盘中,并从中获取路径。它是有效的,但是有很多额外的工作要做,因为您可以直接使用流

 string path = Path.GetTempPath(); // Creates a  Temp path for temporary file.
 Properties.Resources.Yourfile.Save(path); // Save the file into path.
 // Now you can use path to load file with xlApp.Workbooks.Open again!
 Excel.Workbook xlWorkbook = xlApp.Workbooks.Open(path,...);

如果要将文件与项目关联,则需要资源。在这里你可以看到如何为你的项目添加资源好吧,我想你让我走上了正确的道路。我现在怎么打开它?它就在那里,但是
Open
方法需要一个字符串参数,我不知道如何获取路径名。我尝试了
Properties.Resources.newfileName.ToString()
,这给了我一个“[]System.byte”而不是newfileName.xlsx资源是内存流。您必须直接使用流,或者使用临时路径将流保存在磁盘中,然后再次加载。看看我的答案。