繁体   English   中英

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

[英]Visual Studio 2012: How do I open an excel file that is associated with my project?

因此,我正在开发一个项目,该项目使用excel文件向用户控件添加“说明”。截至目前,我的代码使用绝对路径打开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”

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

如何在.NET中创建和使用资源

资源是流。 它们存储在内存中。 因此,我建议您使用需要Stream的类。 不是文件的路径。

因为Workbooks.Open从文件的路径创建Stream。 寻找直接使用流的重载或替代类更好。

var doc = SpreadSheetDocument.Open(Properties.Resources.YourFile , isEditable);

isEditable是布尔值。 您可以使用truefalse 如果将其设置为false,它将是只读的。

我建议您看一下该主题以:

如何:从流中打开电子表格文档(Open XML SDK)

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

 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,...);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM